当用户开始编辑时动画 uitextfield

Animating uitextfield when user begins editing

我在屏幕底部有文本字段。当用户点击它时,文本字段应该动画起来,为键盘留出空间,就像 iOS 消息应用程序所做的那样。无论如何,当发生这种情况时,动画不会正确发生。它没有转到我指定的位置 (160, 410),而是离开屏幕并重新打开,然后转到我指定的位置。这导致它看起来延迟并且键盘先上升。这是我的代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    textField1.delegate = self;
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
[UIView animateWithDuration:0.5 animations:^
 {
     [dock setCenter:CGPointMake(160, 410)];
 }
                 completion:^(BOOL finished)
 {
     [dock setCenter:CGPointMake(160, 410)];
 }];

return YES;
}

像这样使用新语法。它有效吗?

   - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
        [UIView animateWithDuration:0.4 animations:^
        {
            [dock setCenter:CGPointMake(160, 410)];
        }
    completion:^(BOOL finished)
        {
            //Implement completion method here.
        }];

        return YES;
    }

你真的应该使用一个转换,在同一个 UIView.animateWithDuration 块中你说

dock.tranform = CGAffineTransformMakeTranslation(x, y)

其中 x 和 y 是您希望文档移动的距离。

有关详细信息,请参阅 Here