通过 UITextFields 约束问题交换

Posted

技术标签:

【中文标题】通过 UITextFields 约束问题交换【英文标题】:Swapping through UITextFields constraint issue 【发布时间】:2020-04-14 08:15:10 【问题描述】:

我有一个带有表格视图和文本字段的 EditProfileViewController。在其中一个文本字段中,我有一个作为 inputView 的 pickerView 和一个在 inputAccessoryView 中的工具栏。当视图加载并且我选择 firstName 文本字段,然后返回并移动到 lastName 文本字段时,我会收到一个约束警告。

[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:0x2809a4640 'assistantHeight' TUISystemInputAssistantView:0x1113b11a0.height == 45   (active)>",
"<NSLayoutConstraint:0x2809a0320 'assistantView.bottom' TUISystemInputAssistantView:0x1113b11a0.bottom == _UIKBCompatInputView:0x11a437e80.top   (active)>",
"<NSLayoutConstraint:0x2809a05a0 'assistantView.top' V:|-(0)-[TUISystemInputAssistantView:0x1113b11a0]   (active, names: '|':UIInputSetHostView:0x11d06ce50 )>",
"<NSLayoutConstraint:0x280943840 'inputView.top' V:|-(0)-[_UIKBCompatInputView:0x11a437e80]   (active, names: '|':UIInputSetHostView:0x11d06ce50 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x2809a0320 'assistantView.bottom' TUISystemInputAssistantView:0x1113b11a0.bottom == _UIKBCompatInputView:0x11a437e80.top   (active)>

当我在两个默认文本字段之间切换时,会发生这种情况,我不明白为什么。 我做了一些研究,据我所知,这是 ios 13 的一个错误,因为在另一台装有 iOS 10 的设备上,这并没有发生。

消除此约束问题的解决方法是设置 autoCorrectionType = false。但我想启用它。我认为发生这种情况是因为我在countryTextfield的inputView中有一个pickerView,但我不知道如何解决这个问题。

【问题讨论】:

【参考方案1】:

这开始在我的 iOS13 应用中发生,我怀疑这是一个错误。在尝试了我能想到的一切之后,我关闭了自动更正并停止遇到约束问题。

textEdit.autocorrectionType = .no

【讨论】:

太棒了!拯救了我的一天【参考方案2】:

潜在的快速修复:

我可能有一个快速解决约束错误的方法 - 请确保您将键盘设置为

更正:否 智能插入:否

【讨论】:

以上是关于通过 UITextFields 约束问题交换的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 AutoLayouts 在自定义单元格中正确显示 2 个 UITextFields?

为 iPhone 中的不同屏幕改变 UITextFields 的高度和间距

混乱的方法 - if/then 结构和字符串操作问题

Swift:TextFields 总是显示布局约束错误 [重复]

以编程方式添加带有约束的 UITextField

使 UILabels / UITextFields 在所有手机上按比例看起来相同