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

Chr*_*ies 4 ipad ios

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

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

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

Chr*_*ies 5

这个问题的答案是 Sarah Elans 对她的问题“如何可靠地检测 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;
}
Run Code Online (Sandbox Code Playgroud)