无法同时满足 UITextField 上的约束

Posted

技术标签:

【中文标题】无法同时满足 UITextField 上的约束【英文标题】:Unable to simultaneously satisfy constraints on UITextField 【发布时间】:2019-04-08 18:02:02 【问题描述】:

调试应用程序时,我在日志中得到以下信息。视图仍然出现,没有任何问题。如何摆脱这个约束问题?

2019-04-08 13:51:36.006550-0400 Appy[1315:754989] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
    (1) look at each constraint and try to figure out which you don't expect; 
    (2) find the code that added the unwanted constraint or constraints and fix it. 
(
"<NSLayoutConstraint:0x28ab90e60 UITextField:0x1082f0a00.width == 247.5   (active)>",
"<NSLayoutConstraint:0x28ab99e50 UITextField:0x1082f0a00.trailing == UITableViewCellContentView:0x10a58b840.trailingMargin - 58.5   (active)>",
"<NSLayoutConstraint:0x28ab99ea0 UITextField:0x1082f0a00.leading == UITableViewCellContentView:0x10a58b840.leadingMargin   (active)>",
"<NSLayoutConstraint:0x28ab9a490 'UIView-Encapsulated-Layout-Width' UITableViewCellContentView:0x10a58b840.width == 600   (active)>",
"<NSLayoutConstraint:0x28ab99f90 'UIView-leftMargin-guide-constraint' H:|-(15)-[UILayoutGuide:0x2835bb800'UIViewLayoutMarginsGuide'](LTR)   (active, names: '|':UITableViewCellContentView:0x10a58b840 )>",
"<NSLayoutConstraint:0x28ab9a030 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x2835bb800'UIViewLayoutMarginsGuide']-(15)-|(LTR)   (active, names: '|':UITableViewCellContentView:0x10a58b840 )>"
)

括号中的应用程序后面的值会有帮助吗?这是从 XIB 生成的某些代码的行号吗?

【问题讨论】:

【参考方案1】:

如果你给出宽度限制,你不应该给出前导和尾随。要么删除宽度约束,要么只给出前导和尾随。或保持宽度,并删除前导/尾随。

我建议删除宽度约束并保留文本字段的前导和尾随。

错误说,你已经给出了一个固定的宽度约束,同时你已经给出了前导和尾随。这两个不能互相满足,因为当你给出前导和尾随时,基于这两个,文本字段的宽度会有所不同。

【讨论】:

【参考方案2】:

当 UITextfield 成为第一响应者时,iPad 键盘高度似乎已更改为键盘快捷键(这可能是 Apple 错误)。我这样解决了我的问题:

就在 textField becomeFirstResponder 之前放置此代码:

// Objective-C
[textField becomeFirstResponder];
textField.inputAssistantItem.leadingBarButtonGroups=@[];
textField.inputAssistantItem.trailingBarButtonGroups=@[];

// Swift
let item = textField.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []

还有沃拉,不要再警告了!

【讨论】:

以上是关于无法同时满足 UITextField 上的约束的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 uiimageview 同时满足 uitableviewcell 中的约束

以编程方式应用自动布局约束时无法同时满足约束

关闭:“无法同时满足约束”[重复]

iOS - AutoLayout'无法同时满足约束'

如何解决无法同时满足约束

UITableViewCell - 无法同时满足约束