iPad屏幕键盘的高度是多少?

时间:2010-11-18 10:40:23

标签: ipad keyboard height

我在这里寻找两个数字:纵向高度和景观高度。请勿以厘米或英寸为单位,而是以像素为单位。

13 个答案:

答案 0 :(得分:118)

纵向高度为264,而景观高度为352。

我知道这是一个迟到的答案,但我自己也遇到了这个问题。

答案 1 :(得分: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
}

答案 2 :(得分:28)

答案是:取决于

我知道键盘有16种不同的高度,它可以处于任何位置。

不同的是:

  1. landscape / portrait,
  2. webview / non-webview,
  3. 亚洲字符选择方式,常规语言
  4. 拆分键盘/非拆分
  5. 我附上的图片显示了一些不同的可能配置。

    sample ipad keyboard configurations

    我认为您不想列举所有16种可能性,而是要观察UIKeyboardWillShowNotification / UIKeyboardWillHideNotificationUIKeyboardDidChangeFrameNotification(iOS 5.0+),然后从这些事件中获取键盘的框架。< / p>

答案 3 :(得分:17)

在iPad上,键盘大小也取决于语言(例如日语键盘较高)。以编程方式查询它的另一个原因。

答案 4 :(得分:6)

您可以通过由UIWindow类(reference guide link)提供的will / did show / hide键盘通知返回的 userInfo 字典获取键盘高度。这是获得高度比硬编码更好的方法,因为您可以获得以下好处:

  • 设备独立性(iPhone / iPod或iPad)
  • 分辨率独立性(iPhone 3G屏幕/视网膜显示屏/ iPad显示屏/未来显示屏)。
  • 键盘类型/样式独立性(不同的屏幕键盘可能有不同的尺寸)。

事实上,通过查看此词典中返回的结果,这个问题的答案最有可能得到这个数字!

答案 5 :(得分:5)

我在这个页面上投了 down 几个答案,因为它们有危险的误导性。

当然,对于iOS 8,你不能使用硬编码的键盘高度。

这是我的应用程序,在iPhone上运行,以说明原因。

抓住你的标尺,并告诉我,屏幕键盘的高度是多少??

enter image description here

啊......你做不到,是吗?

如果用户打开屏幕键盘顶部的自动类型栏(这会触发第二个“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通知,因为这个小控件是通用的,可以从我的任何一个屏幕调用。

我找到屏幕键盘高度的解决方案(如果它当前可见)是使用免费SVProgressHUD控件中的优秀 visibleKeyboardHeight 功能。

该控件需要屏幕键盘的高度,因此其通知消息UIView将显示为垂直居中。

它是一种享受...所以如果你需要一个快速的方法来获取键盘高度,抓住这段代码的副本,并查看 SVProgressHUD .m 档案。

Download SVProgressHUD from GitHub

答案 6 :(得分:3)

答案 7 :(得分:2)

在iOS 7中,对于iPad,它是402用于​​Landscape,314用于Portrait

答案 8 :(得分:1)

我不知道它是什么,但你可以很容易地解决它。

在iPad上冲浪到这个页面......

的JavaScript

var totalHeight = window.innerHeight;
document.getElementById('what-is-my-height').onclick = function() {
  alert(totalHeight - window.innerHeight); 
};

HTML

<button id="what-is-my-height">Bring up keyboard, then push me</button>

单击按钮(在您启动屏幕键盘后),它应该告诉您高度。重复其他方向。

答案 9 :(得分:1)

高度是: PORTRAIT = 264 LANDSCAPE = 352

答案 10 :(得分:1)

在iOS 7中存在一个问题,其高度和宽度没有在横向模式下交换,但问题已在iOS 8中修复。

因此,这段代码始终会返回iOS7或iOS8的高度,从而消除代码中特定于版本的检查。

- (void)keyboardWasShown:(NSNotification*)aNotification
{
    NSDictionary* info = [aNotification userInfo];
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
    //Always gives the height as the height is of smaller dimension
    CGFloat height = (kbSize.height>kbSize.width)?kbSize.width:kbSize.height;
}

答案 11 :(得分:0)

我认为在其他答案中遇到的麻烦比解决的麻烦多。例如,您最终可以使用此键盘:

enter image description here

当您点击iOS 9上的iPad键盘上的“隐藏”按钮时会发生这种情况。此键盘在full回答的通知信息中的大小仍为Mike Gledhill。 (在UIKeyboardFrameEndUserInfoKey键盘高度高于300)。

我必须从设备高度中减去键盘的y轴原点,才能得到正确的值。

- (void)keyboardWillShow:(NSNotification *)notification
    NSDictionary *info = [aNotification userInfo];
    CGRect keyboardFrame = [info[UIKeyboardFrameBeginUserInfoKey] CGRectValue];

    keyboardFrame = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    keyboardFrame = [self.view convertRect:keyboardFrame fromView:nil];
    CGFloat yPosition = keyboardFrame.origin.y;

    NSInteger height = [UIScreen mainScreen].bounds.size.height - yPosition;
 }   

适用于iOS9的iPhone和iPhone两种方向。

答案 12 :(得分:0)

我创建了这个表格,其中包含 iPhone 和 iPad 键盘的高度,横向和纵向模式,工具栏都打开和关闭。

我什至解释了如何在代码 here 中使用这些维度。

请注意,只有在布局视图之前需要知道键盘的尺寸时,才应使用这些尺寸。否则,其他答案中的解决方案效果更好。

enter image description here