点击UITextField时的动画视图

时间:2014-04-01 09:37:27

标签: ios uiview uitextfield

我想在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];
    }

}

任何帮助都会受到赞赏。

此致

奥德

1 个答案:

答案 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]
}