我在商店中有一个应用程序,为了支持所有设备和键盘,我正在根据键盘高度更改底部约束高度。它适用于除iOS11以外的所有iOS版本。如下图所示,按钮未更改其位置。
谢谢!
这是iOS10预览
这是iOS11预览
码
func keyboardWillShow(notification: NSNotification) {
if !keyboardIsHidden{
return;
}
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
keyboardIsHidden = false
nextButtonBottmConstraint.constant = nextButtonBottmConstraint.constant + keyboardSize.height
}
}
最佳答案
如果您使用UIKeyboardWillShowNotification
来获取键盘高度,则将UIKeyboardFrameBeginUserInfoKey
更改为UIKeyboardFrameEndUserInfoKey
UIKeyboardFrameBeginUserInfoKey对于键盘矩形高度返回0
iOS 11中的值可能会更改为UIKeyboardFrameEndUserInfoKey
解决这个问题。
目标C
- (void)keyboardWasShown:(NSNotification*)aNotification {
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
//Change constraints
}
迅捷3
func keyboardWasShown(_ aNotification: Notification) {
let info = aNotification.userInfo
let kbSize: CGSize? = info?[UIKeyboardFrameEndUserInfoKey]?.cgRectValue?.size
//Change constraints
}
关于ios - iOS11没有正确接受约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46464528/