我在这里寻找两个数字:纵向高度和景观高度。请勿以厘米或英寸为单位,而是以像素为单位。
答案 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种不同的高度,它可以处于任何位置。
不同的是:
我附上的图片显示了一些不同的可能配置。
我认为您不想列举所有16种可能性,而是要观察UIKeyboardWillShowNotification
/ UIKeyboardWillHideNotification
和UIKeyboardDidChangeFrameNotification
(iOS 5.0+),然后从这些事件中获取键盘的框架。< / p>
答案 3 :(得分:17)
在iPad上,键盘大小也取决于语言(例如日语键盘较高)。以编程方式查询它的另一个原因。
答案 4 :(得分:6)
您可以通过由UIWindow类(reference guide link)提供的will / did show / hide键盘通知返回的 userInfo 字典获取键盘高度。这是获得高度比硬编码更好的方法,因为您可以获得以下好处:
事实上,通过查看此词典中返回的结果,这个问题的答案最有可能得到这个数字!
答案 5 :(得分:5)
我在这个页面上投了 down 几个答案,因为它们有危险的误导性。
当然,对于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 功能。
该控件也需要屏幕键盘的高度,因此其通知消息UIView
将显示为垂直居中。
它是一种享受...所以如果你做需要一个快速的方法来获取键盘高度,抓住这段代码的副本,并查看 SVProgressHUD .m 档案。
答案 6 :(得分:3)
您可以通过编程方式找到它(如果您没有设备,可以通过模拟器找到)。
答案 7 :(得分:2)
在iOS 7中,对于iPad,它是402用于Landscape,314用于Portrait
答案 8 :(得分:1)
我不知道它是什么,但你可以很容易地解决它。
在iPad上冲浪到这个页面......
var totalHeight = window.innerHeight;
document.getElementById('what-is-my-height').onclick = function() {
alert(totalHeight - window.innerHeight);
};
<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)
我认为在其他答案中遇到的麻烦比解决的麻烦多。例如,您最终可以使用此键盘:
当您点击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 中使用这些维度。
请注意,只有在布局视图之前需要知道键盘的尺寸时,才应使用这些尺寸。否则,其他答案中的解决方案效果更好。