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

时间:2013-08-15 18:38:58

标签: ios ipad

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

有没有办法让键盘处于这种新状态?由于键盘仍在显示,因此不会触发新通知。

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:5)

iOS 6 + 上,如果您已注册接收UIKeyboardDidShowNotification,则当方向发生变化时,系统会再次调用您的选择器。

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

CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

将上述内容替换为:

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

CGSize kbSize = kbRect.size;