UIKeyboardWillShowNotification为快捷键盘返回错误的框架

时间:2015-12-10 08:22:09

标签: ios iphone swift-keyboard

我正在使用UIKeyboardWillShowNotificationUIKeyboardWillHideNotification来处理键盘 这是显示键盘时调用的函数:

-(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 。此问题仅适用于快速键盘 this issue

相同

1 个答案:

答案 0 :(得分:2)

问题是使用swift键盘,方法-(void) keyboardWillShow:(NSNotification *)note被调用三次,并且每次它返回三个不同的origin.y值和高度第一次它给出keyboardBounds =(0,524,320,44 ),第二次它给出keyboardBounds =(0,308,320,260),最后第三次调用它时返回keyboardBounds =(0,271,320,297)。

由于第三方键盘尺寸不固定..它们的尺寸根据视图的布局方式得到修复,因此类似于自动布局情况(viewDidLoad,viewWillAppear viewWillLayout,viewDidLayout,然后是viewDidAppear,所以你可以在viewDidAppear或viewDidLayout,其中已经布置了View。),这里得到完全布局时的精确帧。