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

Posted

技术标签:

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

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

【问题讨论】:

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

您可以通过编程方式找到这一点(如果您没有设备,则通过模拟器)。

http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html#//apple_ref/doc/uid/TP40009542-CH5-SW1

【讨论】:

【参考方案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 种不同的高度,并且可以在任何位置。

不同的是:

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

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

与其列举所有 16 种可能性,我认为您希望观察 UIKeyboardWillShowNotification/UIKeyboardWillHideNotificationUIKeyboardDidChangeFrameNotification (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 中使用这些维度。

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

【讨论】:

以上是关于iPad屏幕键盘的高度是多少?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 iPad 键盘高度在横向模式下是 1024 像素?

旋转后获取 iPad 屏幕键盘的大小

移动网络 - 如何在键盘打开时获取屏幕高度

如何使用 SwiftUI 在多个屏幕上获取键盘高度并移动按钮

ios 键盘状态栏的高度是多少

如何在 iPad 上运行的 iPhone 应用程序中获取 iOS 8 自定义键盘的主机应用程序屏幕几何图形?