我想在UITextField点击文本字段上键盘重叠的原因时向上滑动当前视图。
在同一个视图控制器中,它太容易处理了,但是我使用2个视图控制器,第一个有页眉和页脚部分,第二个有tableView和一些自定义单元格(如注释字段)。点击注释字段时,主视图控制器应向上滑动(具有页眉和页脚部分)。
我在MainViewcontroller中使用(应该是向上滑动)
- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
const int movementDistance = 160; // tweak as needed
const float movementDuration = 0.3f; // tweak as needed
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.wizardQuestionView.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];
}
在subViewController中(MainViewController的tableView的自定义单元格视图) 在头文件中,我添加了UITextFieldDelegate
和.m文件
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if(textField.tag == 1)
{
NSLog(@"Comment View");
MainViewController *mc = [[MainViewController alloc] init];
//It's going Main ViewController 's method
[mc animateTextField: textField up: YES];
}
}
任何帮助都会受到赞赏。
此致
奥德
答案 0 :(得分:1)
您的MainViewController需要是SubViewController的委托。
然后,当按下textField时,您需要将其发送给您的代理人。像这样:
if([self.delegate respondsToSelector(@selector(textDidBeginEditing:)])
[self.delegate textDidBeginEditing:textField];
为此你需要定义一个协议:
@protocol SubViewControllerProtocol<NSObject>
-(void) textDidBeginEditing:(UITextField*) textField;
@end
在你的SubViewController中你需要创建委托:
@property (nonatomic, weak) id<SubViewControllerProtocol> delegate;
然后在您的MainViewController中,您需要设置委托:
self.subViewController.delegate = self;
然后,在MainViewController中实现textDidBeginEditing:
-(void) textDidBeginEditing:(UITextField*) textField {
[self animateTextField: textField up: YES]
}