当用户开始编辑时动画 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。
我在屏幕底部有文本字段。当用户点击它时,文本字段应该动画起来,为键盘留出空间,就像 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。