当硬件键盘连接到iOS设备(iPad)时,软键盘的一小部分仍然可见:带有单词建议的工具栏以及撤消和重做按钮。
最初我期望用于推断键盘高度的文档化方法(参见https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html) - 在这种情况下 - 只是给出这个条的高度。但是,报告的高度仍然是完整软件键盘的高度(尽管只有一部分可见)。
如果连接了硬件键盘,我们如何获得可见软件键盘的高度?
答案 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;
}