Dan*_*ark 60
代码中的整个答案看起来像这样.首先,您需要注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
并有更多的在这里.请注意,你也需要摆脱它们(使用removeObserver
).
然后,您需要一个获取通知以获取大小的方法.请注意,大小首先不旋转(因为UIWindow
它不旋转.它的内容是这样做的).
- (void) keyboardDidShow:(NSNotification*)notification {
CGRect keyboardFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
NSLog(@"keyboard frame raw %@", NSStringFromCGRect(keyboardFrame));
UIWindow *window = [[[UIApplication sharedApplication] windows]objectAtIndex:0];
UIView *mainSubviewOfWindow = window.rootViewController.view;
CGRect keyboardFrameConverted = [mainSubviewOfWindow convertRect:keyboardFrame fromView:window];
NSLog(@"keyboard frame converted %@", NSStringFromCGRect(keyboardFrameConverted));
}
Run Code Online (Sandbox Code Playgroud)
显然,如果你mainSubviewOfWindow
通过其他方式引用你的,请使用它.
Pet*_*ert 18
对于iPhone,纵向为216像素,横向为162像素,对于iPad,纵向为264像素,横向为352像素.这适用于2010年的美国键盘.
对于其他语言,这些大小可能会有所不同,对于美国也可能会有所不同.
And*_*jov 11
请注意,如果用户选择在iPad上使用"拆分"键盘,则不会触发UIKeyboardDidShowNotification/*UIKeyboardDidHideNotification*通知.相反,将在show和hide上触发UIKeyboardDidChangeFrameNotification通知.您将不得不分析keyboardFrame.origin.y以确定究竟发生了什么(显示或隐藏).