我有几个 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)方法吗?
Best Answer-推荐答案 strong>
抱歉,没有办法。您必须在 在通知观察者内 制作动画或进行键盘处理的任何操作。
这是 Apple 推荐的,并且在我迄今为止遇到的所有情况下都适用。
Apple's Keyboard Guide
关于ios - TextField 显示时获取 UIKeyboard 高度,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/26901665/
|