在iPad版本的文本字段之间切换时出现约束错误

时间:2018-07-20 12:13:58

标签: ios swift xcode keyboard constraints

UITextField具有焦点并且我选择了不同的UITextField时,我收到以下错误(仅在使用iPad时):

  

[LayoutConstraints]无法同时满足约束。       以下列表中至少有一个约束是您不想要的约束。       尝试这个:           (1)查看每个约束,并尝试找出不期望的约束;           (2)查找添加了一个或多个不必要约束的代码并进行修复。       (注意:如果看到的是您不了解的NSAutoresizingMaskLayoutConstraints,请参阅有关UIView属性translationsAutoresizingMaskIntoConstraints的文档)   (       “ << NSAutoresizingMaskLayoutConstraint:0x60400028fa50 h =-&v =-&UIKeyboardAssistantBar:0x7f8895c0e5f0.height == 0(活动)>”,       “ ”,“       “ ”,“       “ ,”       “ ”,“       ”   )   将尝试通过打破约束来恢复   

NB

我正在使用UICollectionViewController,我所有的UITextFields都在UICollectionViewCells内。

我遇到的问题似乎与this相同。另外,我的键盘类型为小数。

2 个答案:

答案 0 :(得分:0)

如果在切换command + k之前按TextFields,则不会出现任何约束错误。

答案 1 :(得分:0)

链接中的调试日志已满:

    (  
        "<NSAutoresizingMaskLayoutConstraint:0x7f86bb4bbd80 h=--& v=--& V:[UIKeyboardAssistantBar:0x7f86bb53b9a0(0)]>",  
        "<NSLayoutConstraint:0x7f86bb544270 V:|-(0)-[_UIButtonBarStackView:0x7f86bb53c5d0]   (Names: '|':UIKeyboardAssistantBar:0x7f86bb53b9a0 )>",  
        "<NSLayoutConstraint:0x7f86bb5442c0 V:[_UIButtonBarStackView:0x7f86bb53c5d0]-(0)-|   (Names: '|':UIKeyboardAssistantBar:0x7f86bb53b9a0 )>",  
        "<NSLayoutConstraint:0x7f86bb760b40 V:|-(0)-[_UIUCBKBSelectionBackground:0x7f86bb760690]   (Names: '|':_UIButtonBarButton:0x7f86bb75f1a0 )>",  
        "<NSLayoutConstraint:0x7f86bb760c10 _UIUCBKBSelectionBackground:0x7f86bb760690.bottom == _UIButtonBarButton:0x7f86bb75f1a0.bottom>",  
        "<NSLayoutConstraint:0x7f86bb760f00 'UIButtonBar.maximumAlignmentSize' _UIButtonBarButton:0x7f86bb75f1a0.height == UILayoutGuide:0x7f86bb53f9b0'UIViewLayoutMarginsGuide'.height>",  
        "<NSLayoutConstraint:0x7f86bb53fb20 'UIView-bottomMargin-guide-constraint' V:[UILayoutGuide:0x7f86bb53f9b0'UIViewLayoutMarginsGuide']-(3)-|   (Names: '|':_UIButtonBarStackView:0x7f86bb53c5d0 )>",  
        "<NSLayoutConstraint:0x7f86bb53fa80 'UIView-topMargin-guide-constraint' V:|-(10)-[UILayoutGuide:0x7f86bb53f9b0'UIViewLayoutMarginsGuide']   (Names: '|':_UIButtonBarStackView:0x7f86bb53c5d0 )>"  
    )  

我可以从此日志中获取冲突:

  • 1:UIKeyboardAssistantBar的高度为0
  • 2 + 3:_UIButtonBarStackView的顶部和底部等于UIKeyboardAssistantBar的顶部和底部,因此_UIButtonBarStackView的高度也为0。
  • 7 + 8:UILayoutGuide的顶部有10到_UIButtonBarStackView,底部有3到_UIButtonBarStackView。
  • 6:_UIButtonBarButton的高度等于UILayoutGuide的高度
  • 4 + 5:_UIUCBKBSelectionBackground的高度等于_UIButtonBarButton的高度。

_UIUCBKBSelectionBackground的最小高度为0,所以UIKeyboardAssistantBar的最小高度为13,但是现在它具有约束:height =0。由于这个约束是NSAutoresizingMaskLayoutConstraint,它是由系统生成的,所以我认为解决方案设置UIKeyboardAssistantBar.translatesAutoresizingMaskIntoConstraints为NO(默认为YES)。