我在商店中有一个应用程序,为了支持所有设备和键盘,我正在根据键盘高度更改底部约束高度。它适用于除iOS11以外的所有iOS版本。如下图所示,按钮未更改其位置。

谢谢!

这是iOS10预览
ios - iOS11没有正确接受约束-LMLPHP

这是iOS11预览
ios - iOS11没有正确接受约束-LMLPHP



    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/

10-09 20:51