无法同时满足 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 上的约束的主要内容,如果未能解决你的问题,请参考以下文章