当硬件键盘连接时,获取iOS键盘高度

4
当硬件键盘连接到iOS设备(iPad)时,仍然会显示软件键盘的一小部分:包含单词建议、撤销和重做按钮的工具栏。
最初,我希望推断出键盘高度的文档方法(参见https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html)在这种情况下只会给出该栏的高度。然而,报告的高度仍然是完整软件键盘的高度(尽管只有一部分可见)。
当连接硬件键盘时,我们如何获取可见软件键盘的高度?
1个回答

5

这个问题的答案是Sarah Elan对她的问题“如何可靠地检测iOS 9上是否连接了外接键盘?”的一部分。(尽管其他答案覆盖了其中一部分,但我没有在这里看到重复的问题(特定公式也缺失)):

可以通过检查origin.y(而不是size.height)来获取软件键盘的可见高度,然后将该值从窗口的高度中减去,即

// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];

    // Get the size of the keyboard.
    NSValue* keyboardFrameValue     = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRectWrtScreen    = [keyboardFrameValue CGRectValue];

    keyboardWidth = keyboardRectWrtScreen.size.width;
    keyboardHeight = [[[self view] window] frame].size.height - keyboardRectWrtScreen.origin.y;
}

使用UIKeyboardDidShowNotification获取了真实的高度,非常好。 - zszen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接