我正在使用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 。此问题仅适用于快速键盘 与this issue
相同答案 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。),这里得到完全布局时的精确帧。