纵向高度和以点为单位在景观的高度。
Answer 1:
我用下面的方法用于确定在IOS 7.1键盘的帧。
在我的视图控制器的init方法,我注册了UIKeyboardDidShowNotification
:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(keyboardOnScreen:) name:UIKeyboardDidShowNotification object:nil];
然后,我用下面的代码keyboardOnScreen:
以访问键盘的帧。 此代码获取userInfo
从通知字典,然后访问NSValue
关联UIKeyboardFrameEndUserInfoKey
。 然后,您可以访问的CGRect,并将其转换到您的视图控制器的视图的坐标。 从那里,你可以执行你需要根据该框架上的任何计算。
-(void)keyboardOnScreen:(NSNotification *)notification
{
NSDictionary *info = notification.userInfo;
NSValue *value = info[UIKeyboardFrameEndUserInfoKey];
CGRect rawFrame = [value CGRectValue];
CGRect keyboardFrame = [self.view convertRect:rawFrame fromView:nil];
NSLog(@"keyboardFrame: %@", NSStringFromCGRect(keyboardFrame));
}
迅速
和等效实现与斯威夫特:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardDidShow), name: UIResponder.keyboardDidShowNotification, object: nil)
@objc
func keyboardDidShow(notification: Notification) {
guard let info = notification.userInfo else { return }
guard let frameInfo = info[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return }
let keyboardFrame = frameInfo.cgRectValue
print("keyboardFrame: \(keyboardFrame)")
}
Answer 2:
请记住这一点,与iOS 8,屏幕键盘的大小可以变化。 不要以为屏幕键盘将始终可见(与特定的高度)或不可见的。
现在,与iOS 8,用户还可以刷卡上下车文本的预测区域...并做到这一点时,他们,这将揭开序幕的应用程序的keyboardWillShow
再次事件。
这将打破很多遗留代码样本,其中建议编写的keyboardWillShow
事件,这仅仅是衡量屏幕键盘的当前高度,并以此(绝对)量在页面上向上或向下转移你的控制。
换句话说,如果你看到任何示例代码,它只是告诉你添加一个keyboardWillShow
这一数额事件,测量键盘高度,然后调整你的控制的高度,这将不再总是工作。
在我的例子上文中,我使用的样本代码从以下站点,该动画垂直约束constant
值。
执业自动版式
在我的应用程序,我添加了一个约束到我UITextView
,设置在屏幕的底部。 当屏幕上首次出现,我存储这个初始的垂直距离。
然后,每当我keyboardWillShow
事件被拉开序幕,我想补充的(新)键盘高度,以这种原始的约束值(这样的约束大小调整控件的高度)。
是啊。 它很丑。
而我有些恼火/惊讶的是XCode中6的可怕,痛苦的自动版式不只是让我们的控制的底部连接到屏幕的任何的底部,或屏幕上的键盘的顶部。
也许我失去了一些东西。
除了我的理智。
Answer 3:
键盘高度是肖像模式和162pts为风景模式216pts。
资源
Answer 4:
版本注释:这是iOS中9和10不再重视,因为他们支持自定义键盘尺寸。
这依赖于模型和QuickType吧:
http://www.idev101.com/code/User_Interface/sizes.html
Answer 5:
键盘高度取决于型号,QuickType栏,用户设置...最好的方法是计算dinamically:
雨燕3.0
var heightKeyboard : CGFloat?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardShown(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
}
func keyboardShown(notification: NSNotification) {
if let infoKey = notification.userInfo?[UIKeyboardFrameEndUserInfoKey],
let rawFrame = (infoKey as AnyObject).cgRectValue {
let keyboardFrame = view.convert(rawFrame, from: nil)
self.heightKeyboard = keyboardFrame.size.height
// Now is stored in your heightKeyboard variable
}
}
Answer 6:
我找不到最新的应答,让我检查一下所有的模拟器。(iOS的11.0)
设备| 屏幕高度| 肖像| 景观
iPhone 4S | 480.0 | 216.0 | 162.0
iPhone 5,iPhone 5S,iPhone SE | 568.0 | 216.0 | 162.0
iPhone 6,iPhone 6S,iPhone 7,iPhone 8,iPhone X | 667.0 | 216.0 | 162.0
iPhone 6加,iPhone 7个iPhone 8更| 736.0 | 226.0 | 162.0
iPad的第五代,iPad的空气,空气的iPad 2,iPad的临9.7的iPad Pro的10.5,iPad的临12.9 | 1024.0 | 265.0 | 353.0
谢谢!