【问题标题】:Constraint errors when switching between TextFields in iPad versioniPad版TextFields切换时出现约束错误
【发布时间】:2018-12-28 18:03:39
【问题描述】:

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

[LayoutConstraints] 无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。 尝试这个: (1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档) ( "<0x60400028fa50 h="--&" v="--&" uikeyboardassistantbar:0x7f8895c0e5f0.height="="><0x60c000289d30 v:><0x60c00028b130 v:><0x60400028ec90 _uibuttonbarbutton:0x7f8895e2f950.height="=" uilayoutguide:0x60c0001a7700><0x60c000285f50 v:><0x60c000285f50 v:>

标签: ios swift xcode keyboard constraints


【解决方案1】:

如果我在切换TextFields 之前按command + k,那么我不会收到任何约束错误。

【讨论】:

    【解决方案2】:

    链接中的调试日志已满:

        (  
            "<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的top和bottom等于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)。

    【讨论】:

    • 如何访问 UIKeyboardAssistantBar ??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 2012-07-18
    • 1970-01-01
    • 2019-02-26
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多