textFieldDidEndEditing

textFieldDidEndEditing

在我的应用程序中,我的UITextFields放置在键盘顶部的下方,因此我必须向上移动 View ,以便在编辑时可以在键盘上看到文本字段。为此,我使用UITextFieldDelegate方法textFieldDidBeginEditing:。然后在方法textFieldDidEndEditing:中,将 View 向下移动。

当我尝试在文本字段之间切换时,会出现问题。当我这样做时,委托(delegate)将调用方法textFieldDidEndEditing:,然后立即为另一个文本字段调用textFieldDidBeginEditing:,这会使 View 下降然后立即上升,因此看起来像是屏幕在摇动。有没有解决此问题的方法?

最佳答案

我刚刚遇到了完全相同的问题,这就是我想到的解决方案。

设置一个单独的方法来处理textField的键盘被辞职时的处理,然后将self.view.center重新对齐方式放置在其中。这样,您可以确保textFieldDidEndEditing方法保持独立。

如果我没有正确解释自己,这是一个例子。请注意,当用户点击textField时,尽管可以将此方法链接到普通键盘上的DONE按钮,但我还是在导航栏中放置了DONE按钮(由于它是数字小键盘):

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    UIBarButtonItem *hideKeyboardButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignResponder:)];
    [self.navigationItem setRightBarButtonItem:hideKeyboardButton animated:YES];
}

- (void)textFieldDidEndEditing:(UITextField *)textField {

//Nothing needs to go here anymore

}

- (void)resignResponder:(id)sender {
    [textField resignFirstResponder];
    //Use core animation instead of the simple action below in order to reduce 'snapback'
    self.view.center = CGRectMake(0, 0, 320, 480);
}

关于iphone - textFieldDidEndEditing不需要时移动屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11300946/

10-09 02:28