我有几个 UITextFields 在弹出时会被键盘隐藏,所以我实现了 UIKeyboardWillShowNotification
和 UIKeyboardWillHideNotification
并将它们发送到各自的方法:
- (void)keyboardWillShowNSNotification*)notification
{
CGFloat height = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
keyBoardHeight = height;
}
- (void)keyboardWillHideNSNotification*)notification
{
CGFloat height = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
keyBoardHeight = height;
}
然后我将我的文本字段委托(delegate)给此方法:
//TextFieldDelegate
- (void)textFieldDidBeginEditingUITextField *)textField
{
float keyboardOffset = [self offsetForKeyboard:textField.frame.origin.y withHeight:textField.frame.size.height];
NSLog(@"%f, %f", keyBoardHeight, keyboardOffset);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.1];
self.view.frame = [Global rect:self.view.frame withNewY:-[self offsetForKeyboard:textField.frame.origin.y withHeight:textField.frame.size.height]];
[UIView commitAnimations];
}
代码运行正常,但是当我运行代码时,keyboardWillShow:
方法在 textFieldDidBeginEditing:
方法之后运行。正因为如此,代码第一次运行时 keyboardHeight
被设置为 0,所以我计算的偏移量是很远的。
如何使 keyboardWillShow:
方法在 textFieldDidBeginEditing:
方法之前运行?我可以使用其他委托(delegate)方法吗?
抱歉,没有办法。您必须在 在通知观察者内 制作动画或进行键盘处理的任何操作。 这是 Apple 推荐的,并且在我迄今为止遇到的所有情况下都适用。
关于ios - TextField 显示时获取 UIKeyboard 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26901665/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |