UIKeyboardWillShowNotification 为 swift 键盘返回不正确的帧
UIKeyboardWillShowNotification returning incorrect frame for swift keyboard
我正在使用 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 的高度!
我也尝试过注释行。键盘绑定的两种方式都是 44。此问题仅适用于 swift 键盘。
与 this issue
相同
嗯,问题出在 swift 键盘上,方法 -(void) keyboardWillShow:(NSNotification *)note
被调用了三次,每次都是 returns 三个不同的 origin.y 值和高度它给出 keyboardBounds = (0, 524, 320, 44),第二次它给出 keyboardBounds = (0, 308, 320, 260) 最后第三次当它被调用时 returns keyboardBounds = (0, 271、320、297)。
由于第三方键盘尺寸不固定.. 它们的尺寸根据视图的布局而固定,因此类似于自动布局情况(viewDidLoad、viewWillAppear viewWillLayout、viewDidLayout 然后是 viewDidAppear,所以您得到的确切框架知道在 viewDidAppear 或 viewDidLayout 中,View 已经布局。),当它的视图完全布局时,它会得到精确的框架。
也许你可以尝试其他通知,例如:UIKeyboardDidShowNotification
,UIKeyboardDidChangeFrameNotification
。 UIKeyboardWillShowNotification
只告诉你键盘会显示给你,不能告诉你键盘显示的确切框架。
我正在使用 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 的高度!
我也尝试过注释行。键盘绑定的两种方式都是 44。此问题仅适用于 swift 键盘。
与 this issue
嗯,问题出在 swift 键盘上,方法 -(void) keyboardWillShow:(NSNotification *)note
被调用了三次,每次都是 returns 三个不同的 origin.y 值和高度它给出 keyboardBounds = (0, 524, 320, 44),第二次它给出 keyboardBounds = (0, 308, 320, 260) 最后第三次当它被调用时 returns keyboardBounds = (0, 271、320、297)。
由于第三方键盘尺寸不固定.. 它们的尺寸根据视图的布局而固定,因此类似于自动布局情况(viewDidLoad、viewWillAppear viewWillLayout、viewDidLayout 然后是 viewDidAppear,所以您得到的确切框架知道在 viewDidAppear 或 viewDidLayout 中,View 已经布局。),当它的视图完全布局时,它会得到精确的框架。
也许你可以尝试其他通知,例如:UIKeyboardDidShowNotification
,UIKeyboardDidChangeFrameNotification
。 UIKeyboardWillShowNotification
只告诉你键盘会显示给你,不能告诉你键盘显示的确切框架。