【问题标题】:What is the height of iPad's onscreen keyboard?iPad屏幕键盘的高度是多少?
【发布时间】:2011-05-11 23:06:26
【问题描述】:

我在这里寻找两个数字:纵向高度和横向高度。不要以厘米或英寸为单位回答,而是以像素为单位。

【问题讨论】:

  • 您可以轻松制作两张截图并进行测量。
  • OP 请将正确答案更改为以编程方式确定框架的答案之一。此外,您不能指定像素,而是在 iOS 上指定点。
  • 如果您正在寻找高度,而不是通过编程找到的高度,那么这是一个措辞不当的问题。你想要英文键盘吗?溢出的键盘?启用自动填充的高度?甚至是新的 iOS 8 键盘?另外,如果您不想要程序化答案,请不要在 stackoverflow 上提问。大多数遇到这个问题和公认答案的开发人员都会被误导。从开发的角度来看,您应该始终以编程方式找到高度。从设计的角度来看,找一个像素尺并测量它。
  • iPad keyboard dimensions 的可能重复项

标签: ipad keyboard height


【解决方案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>

单击按钮(在您调出屏幕键盘之后),它应该会告诉您高度。重复另一个方向。

【讨论】:

  • 我没有 iPad,也没有网络服务器,所以这对我来说并不容易。我希望有人可以提供这些数字。
  • 这在 ipad 上很棒,但在 iphone 上似乎不起作用,因为它居中。
  • 这个解决方案在 ios/safari 中是不可能的。因为键盘没有调整主网页视图的大小。
【解决方案2】:
【解决方案3】:

高度是: 肖像 = 264 景观 = 352

【讨论】:

  • 这就是我正在寻找的答案。如果您可以提供横向高度,我会接受它作为我的答案。 :)
  • 英文键盘的纵向高度是264,所以你的回答不正确,但还是谢谢。
  • 你是对的。对不起。我测量它们的方式没有考虑到状态栏的 20 像素。我现在已经更新了我的答案。
【解决方案4】:

纵向高度为264,横向高度为352。

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

【讨论】:

  • 不用担心答案会迟到。一旦我验证了高度,我就会接受这个答案。 :)
  • 这是一个糟糕的答案。您永远不想对这些像素值进行硬编码,因为它们可能会在未来的版本中更改。例如,Apple 可以将键盘的尺寸调整几个像素,他们可以引入新的键盘形式(例如拆分键盘)或针对不同语言的不同尺寸。他们还可以发布不同分辨率的屏幕(例如视网膜显示器)。所有这些情况都可能导致代码的预期效果中断。使用其他答案提供的动态解决方案之一会更好。
  • @JamesBedford 这不是一个糟糕的答案,而是正确的答案。你甚至不知道我需要这些测量值是为了什么。也许我是一名图形设计师,需要键盘的高度来绘制合适的模型。在应用程序中硬编码这些值可能是不好的做法,但这与答案的质量无关。
  • @LeonS,这个答案不正确。您的答案适用于 iPhone。这个问题是关于 iPad 的。
  • @foob.ar 当被问到这个问题时,只有一个可用的 iPad,并且键盘高度在可用的 iOS 版本之间没有差异。不同的语言有不同高度的键盘,但大多数键盘的高度与英文键盘相同。今天情况大不相同,这个答案的用处要低得多,但从历史上看,它具有相关性,您可以从支持的数量看出。
【解决方案5】:

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

【讨论】:

  • 中文键盘也更高,因为它们是可以根据输入选择的单词。
【解决方案6】:
- (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
}

【讨论】:

  • +1 for this answer-显示了在横向中如何将高度返回为应该是宽度。我注意到我在横向中的高度为 1024,宽度为 352,这对我来说似乎很奇怪,直到我看到这个答案。谢谢
  • 答案不完整。
  • 这怎么不完整/不明显?
  • 这就是为什么,因为你需要这个:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil]; 但是我的问题是,这个应用程序是横向的,这段代码似乎没有让它生效。它说我的高度是 1024,宽度是 396。
  • @thefoyer - 你有没有弄清楚横向应用程序发生了什么?似乎在 iOS 8 上已修复,但在 iOS 7 上我遇到了同样的问题,只是假设最小尺寸是高度......有点 hacky 但它似乎工作。
【解决方案7】:

您可以从 UIWindow 类 (reference guide link) 提供的 will/did 显示/隐藏键盘通知返回的 userInfo 字典中获取键盘高度。这是一种比硬编码更好的获取高度的方法,因为您可以获得以下好处:

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

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

【讨论】:

  • 可以,但是sn-ps已经被别人提供了,没关系! :)
【解决方案8】:

答案是:视情况而定。

我知道键盘可以有 16 种不同的高度,并且可以在任何位置。

不同的是:

  1. 风景/肖像,
  2. webview/非webview,
  3. 亚洲字符选择样式,常规语言
  4. 分体键盘/非分体

我附上了一张图片,展示了一些不同的可能配置。

与其列举所有 16 种可能性,我认为您希望观察 UIKeyboardWillShowNotification/UIKeyboardWillHideNotification 和 UIKeyboardDidChangeFrameNotification (iOS 5.0+),然后从这些事件中获取键盘的框架。

【讨论】:

    【解决方案9】:

    在 iOS 7 中,对于 iPad,横向为 402,纵向为 314

    【讨论】:

    • 它可能在您的应用程序和上下文中,但这不是一个普遍的事实。请参阅@jcampbell1 和其他人的答案。这取决于很多东西,包括语言、辅助工具栏、第 3 方键盘等。
    【解决方案10】:

    我在此页面上对几个答案投了否决票,因为它们具有危险的误导性。

    当然,在 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 通知,因为这个小控件是通用的,可以从我的任何屏幕调用。

    如果屏幕键盘当前可见,我的解决方案是使用免费 SVProgressHUD 控件中出色的 visibleKeyboardHeight 函数。

    那个控件也需要屏幕键盘的高度,所以它的通知消息UIViews 会垂直居中显示。

    这是一种享受...所以如果你确实需要一个快速的'n'dirty方法来获取键盘高度,获取此代码的副本,然后查看SVProgressHUD .m 文件。

    Download SVProgressHUD from GitHub

    【讨论】:

      【解决方案11】:

      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;
      }
      

      【讨论】:

        【解决方案12】:

        我认为比其他答案解决的麻烦更多。例如,您最终可以使用这个键盘:

        当您在 iOS 9 上单击 iPad 键盘上的“隐藏”按钮时会发生这种情况。此键盘在来自 Mike Gledhill 答案的通知信息中仍有 full 大小。 (在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 和 iPad 在两个方向上都适用。

        【讨论】:

          【解决方案13】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2012-07-02
            • 1970-01-01
            • 2014-11-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-14
            相关资源
            最近更新 更多