- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在使用 UIKeyboardWillShowNotification
和 UIKeyboardWillHideNotification
来处理键盘。
这是显示键盘时调用的函数:
-(void) keyboardWillShow:(NSNotification *)note
{
CGRect keyboardBounds;
//[[note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardBounds];
NSValue* keyboardFrameBegin = [note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
keyboardBounds = [keyboardFrameBegin CGRectValue];
}
我得到 keyboardBounds = (0, 524, 320, 44) 并且我使用的是 5s。不知道为什么 origin.y 会变成 524(应该接近 300)而高度会变成 44!我也尝试过注释行。键盘绑定(bind)的两种方式都是 44。此问题仅适用于快捷键盘。
与 this issue 相同
最佳答案
问题出在快速键盘上,-(void) keyboardWillShow:(NSNotification *)note
方法被调用了三次,每次它首先返回三个不同的 origin.y 值和高度一次它给出 keyboardBounds = (0, 524, 320, 44),第二次它给出 keyboardBounds = (0, 308, 320, 260) 最后第三次当它被调用时它返回 keyboardBounds = (0, 271, 320 , 297).
由于第三方键盘大小不固定.. 它们的大小根据 View 的布局方式固定,因此类似于自动布局情况(viewDidLoad、viewWillAppear viewWillLayout、viewDidLayout 然后是 viewDidAppear,因此您可以了解确切的框架viewDidAppear 或 viewDidLayout,其中 View 已经布局。),当它的 View 完全布局时,它会在此处获得精确的框架。
关于ios - UIKeyboardWillShowNotification 为快速键盘返回不正确的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196856/
我是一名优秀的程序员,十分优秀!