如何在不依赖通知的情况下获得键盘高度

Ste*_*den 15 ipad ios

我知道如何设置NSNotification观察器来检测键盘显示/隐藏的时间.从这里我可以得到键盘的高度.但是如果在键盘仍然显示时旋转设备会发生什么?

有没有办法让键盘处于这种新状态?由于键盘仍然显示新的通知将不会被触发.

Mic*_*lum 13

您仍然必须使用NSNotificationCenter,但您必须观察不同的密钥.你正在寻找的关键是UIKeyboardDidChangeFrameNotification,它根据文档在键盘框架发生变化后立即发布.


Mar*_*ams 5

iOS 6+上,如果您已注册接收UIKeyboardDidShowNotification,则在方向更改时将再次调用您的选择器.

这是Apple在其管理键盘的示例代码中使用的通知,但是,在使用此通知时,在横向模式下计算键盘高度时计算错误:

CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
Run Code Online (Sandbox Code Playgroud)

用以下代替上面的内容:

// Works in both portrait and landscape mode
CGRect kbRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
kbRect = [self.view convertRect:kbRect toView:nil];

CGSize kbSize = kbRect.size;
Run Code Online (Sandbox Code Playgroud)