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

Eri*_*k B 50 keyboard height ipad

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

the*_*aws 119

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

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

  • @JamesBedford这不是一个错误的答案,这是正确的答案.你甚至不知道我需要那些测量.也许我是一名图形设计师,需要键盘的高度来绘制一个合适的模型.在应用程序中对这些值进行硬编码可能是不好的做法,但它与答案的质量无关. (18认同)
  • 这是一个糟糕的答案.您永远不想对这些像素值进行硬编码,因为它们可能会在将来的版本中进行更改.例如,Apple可以将键盘的尺寸调整几个像素,它们可以引入新形式的键盘(例如分离键盘)或不同语言的不同尺寸.他们还可以发布不同的分辨率屏幕(如视网膜显示屏).所有这些情况都可能导致代码的预期效果中断.使用其他答案提供的动态解决方案之一会好得多. (8认同)

小智 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
}
Run Code Online (Sandbox Code Playgroud)

  • 这怎么不完整/不明显? (4认同)

jca*_*ll1 28

答案是:这取决于.

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

它有所不同:

  1. 横向纵向,
  2. 网页视图/非web视图,
  3. 亚洲人物选择风格,常规语言
  4. 分割键盘/非分割

我附上了一个显示一些不同可能配置的图像.

示例ipad键盘配置

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


小智 17

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


Jam*_*ord 6

您可以从UI/do显示/隐藏键盘通知返回的userInfo字典中获取键盘高度,如UIWindow类(参考指南链接)所提供的.获得高度比硬编码更好,因为您可以获得以下好处:

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

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


Mik*_*ill 5

[我已投下来一对夫妇的答案的这个网页上,因为他们是危险的误导。

当然,在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);

}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,不要忘记convertRect上面的代码中的调用。

如果没有它,我发现在运行iOS 8且横向运行的iPad上,有时会报告键盘高度为1024像素。

还有一件事...

今天,我正在研究自己编写的自定义控件,该控件出现在iPhone / iPad屏幕的底部,并且意识到我没有考虑屏幕键盘的高度。

我不想添加keyboardWillShow / Hide通知,因为这个小控件是通用的,可以从我的任何屏幕上调用。

我发现屏幕键盘高度(如果当前可见)的解决方案是使用自由控件中出色的visibleKeyboardHeight函数SVProgressHUD

该控件需要屏幕键盘的高度,因此其通知消息UIViews会垂直居中。

它的确起作用了……因此,如果您确实需要一种快捷的获取键盘高度的方法,请获取此代码的副本,然后查看SVProgressHUD.m文件。

从GitHub下载SVProgressHUD