如何防止 TextField 在 SwiftUI 列表中消失?
Posted
技术标签:
【中文标题】如何防止 TextField 在 SwiftUI 列表中消失?【英文标题】:How to prevent TextField from disappearing in SwiftUI List? 【发布时间】:2019-12-19 22:14:30 【问题描述】:有一个讨厌的 SwiftUI 错误,如果将 TextField
放在 List
内的 HStack
中,TextField
就会消失
List
ForEach(0...200, id: \.self) index in
HStack
Text("Text \(index)")
TextField("Test", text: .constant("TextField \(index)"))
https://recordit.co/X12uGct7gD
当TextField
放在HStack / VStack / ZStack / .overlay() / .background()
中时会发生这种情况。当TextField
是ForEach
的唯一孩子时,不会发生这种情况。
我已经提交了一个错误 (FB7500885),但我正在寻找来自社区的想法来解决它。到目前为止,这是我尝试过的:
在TextField
上设置显式.frame()
在TextField
上设置.fixedSized()
使用 UITextField
包裹在 UIViewConvertible
中,有或没有布局约束
还有什么我可以尝试的吗?
【问题讨论】:
您使用哪个 Xcode 版本?用于统计目的。 这发生在 Xcode 11.2 和 11.3 上,无论是在设备上还是在模拟器上。 今天刚打这个。令人抓狂!很高兴找到您的帖子。 【参考方案1】:试试下面的一个:
List
ForEach(0...200, id: \.self) index in
HStack
Text("Text \(index)")
TextField("Test", text: .constant("TextField \(index)")).id(index)
【讨论】:
这行得通!非常感谢。必须使用id()
仍然感觉 SwiftUI 中存在错误,但至少这是一个干净的解决方法。以上是关于如何防止 TextField 在 SwiftUI 列表中消失?的主要内容,如果未能解决你的问题,请参考以下文章
如何在按钮单击时在 SwiftUI 中为 TextField 设置文本
我如何在SWIFTUI中把textField作为firstResponder,就像Swift一样:textField.becomesFirstResponder。