the*_*aws 119
纵向高度为264,而景观高度为352.
我知道这是一个迟到的答案,但我自己也遇到过这个问题.
小智 55
- (void) keyboardWasShown:(NSNotification *)nsNotification {
    NSDictionary *userInfo = [nsNotification userInfo];
    CGSize kbSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    NSLog(@"Height: %f Width: %f", kbSize.height, kbSize.width);
    // Portrait:    Height: 264.000000  Width: 768.000000
    // Landscape:   Height: 352.000000  Width: 1024.000000
}
jca*_*ll1 28
答案是:这取决于.
我知道键盘有16种不同的高度,它可以处于任何位置.
它有所不同:
我附上了一个显示一些不同可能配置的图像.

我认为你想要观察UIKeyboardWillShowNotification/ UIKeyboardWillHideNotification和UIKeyboardDidChangeFrameNotification(iOS 5.0+),然后从这些事件中获取键盘的框架,而不是枚举所有16种可能性.
[我已投下来一对夫妇的答案的这个网页上,因为他们是危险的误导。
当然,在iOS 8中,您不能使用硬编码的键盘高度。
这是我在iPhone上运行的应用,以说明原因。
拿起尺子,告诉我,屏幕键盘的高度是多少?

啊...你做不到,可以吗?
如果用户打开屏幕键盘顶部的自动键入栏,则高度可以变化(顺便说一句,触发第二个“ keyboardWillShow”事件)。
iPad上的屏幕键盘也是如此。
底线:抱歉,您必须在keyboardWillShow事件中测量键盘高度。
否则,您将遇到问题。
- (void)keyboardWillShow:(NSNotification *)notification {
    NSDictionary *info = [notification userInfo];
    NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardFrame = [kbFrame CGRectValue];
    keyboardFrame = [self.view convertRect:keyboardFrame fromView:nil];
    CGFloat heightOfKeyboard = keyboardFrame.size.height;
    NSLog(@"The keyboard is now %d pixels high.", (int)heightOfKeyboard);
}
顺便说一句,不要忘记convertRect上面的代码中的调用。
如果没有它,我发现在运行iOS 8且横向运行的iPad上,有时会报告键盘高度为1024像素。
还有一件事...
今天,我正在研究自己编写的自定义控件,该控件出现在iPhone / iPad屏幕的底部,并且意识到我没有考虑屏幕键盘的高度。
我不想添加keyboardWillShow / Hide通知,因为这个小控件是通用的,可以从我的任何屏幕上调用。
我发现屏幕键盘高度(如果当前可见)的解决方案是使用自由控件中出色的visibleKeyboardHeight函数SVProgressHUD。
该控件还需要屏幕键盘的高度,因此其通知消息UIViews会垂直居中。
它的确起作用了……因此,如果您确实需要一种快捷的获取键盘高度的方法,请获取此代码的副本,然后查看SVProgressHUD.m文件。
| 归档时间: | 
 | 
| 查看次数: | 48223 次 | 
| 最近记录: |