[英]Animating view when UITextField tapped
我想在UITextField敲击键盘在文本字段上重叠的原因时向上滑动当前视图。
在同一个view-controller中,它很容易处理,但是我使用2个view controller,第一个具有页眉和页脚部分,第二个具有tableView和一些自定义单元格(例如comment字段)。 点击注释字段时,主视图控制器应向上滑动(具有页眉和页脚部分)。
我在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];
}
}
任何帮助将不胜感激。
问候
奥德
您的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]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.