繁体   English   中英

轻按UITextField时的动画视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM