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

时间:2016-08-18 23:38:22

标签: ios ipad

当硬件键盘连接到iOS设备(iPad)时,软键盘的一小部分仍然可见:带有单词建议的工具栏以及撤消和重做按钮。

最初我期望用于推断键盘高度的文档化方法(参见https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html) - 在这种情况下 - 只是给出这个条的高度。但是,报告的高度仍然是完整软件键盘的高度(尽管只有一部分可见)。

如果连接了硬件键盘,我们如何获得可见软件键盘的高度?

1 个答案:

答案 0 :(得分:4)

这个问题的答案是Sarah Elans回答她的问题的一部分" How to reliably detect if an external keyboard is connected on 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;
}