UIKeyboardWillShowNotification为快速键盘返回错误的帧

Nit*_*ish 14 iphone ios swift-keyboard

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

-(void) keyboardWillShow:(NSNotification *)note
{
    CGRect keyboardBounds;
    //[[note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardBounds];
    NSValue* keyboardFrameBegin = [note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
    keyboardBounds = [keyboardFrameBegin CGRectValue];  
}  
Run Code Online (Sandbox Code Playgroud)

我得到keyboardBounds =(0,524,320,44),我使用的是5s.不知道为什么origin.y来了524(应该在300附近)和身高44!我也试过评论说.键盘绑定的两种方式都是44.此问题仅适用于快速键盘.
此问题相同

Rah*_*tel 2

问题在于快速键盘,该方法-(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 中了解确切的框架,其中视图已经布局。),当视图完全布局时,它会获得精确的帧。