對這個問題的回答是的elan薩拉答案的一部分,她的問題「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;
}
使用UIKeyboardDidShow通知得到了真正的高度 – zszen