当我绑定它的值时,SwiftUI TextField 的行为很奇怪(不能输入中文,偶尔退格会跳过一个字符)
Posted
技术标签:
【中文标题】当我绑定它的值时,SwiftUI TextField 的行为很奇怪(不能输入中文,偶尔退格会跳过一个字符)【英文标题】:SwiftUI TextField behaves weirdly when I bind its value (can't type Chinese, occasionally backspaces skip a character) 【发布时间】:2020-08-20 07:28:36 【问题描述】:这是一个最小复制的代码。我怀疑这与更改 SearchTerm 导致 UI 重新呈现或其他什么有关,但我不太明白这一点。理想情况下,我会onEditingChange
,但我想对每个人做出反应keypress
。
struct ContentView: View
@State var searchTerm: String = "Hello World!"
var body: some View
let binding = Binding<String>(get:
self.searchTerm
, set:
if $0 != self.searchTerm
self.searchTerm = $0
)
return VStack
TextField("Search field", text: binding)
Text(searchTerm)
Here you can see a gif of the buggy behavior
(这是在最新的非测试版 Xcode、Swift、macOS 等上)
编辑:我认为这可能只是一个 SwiftUI 错误 - https://developer.apple.com/forums/thread/128721
【问题讨论】:
为什么不直接绑定$searchTerm
?
这只是一个最小的复制 - 我的真实场景涉及术语 -> (bla blah vlah vblah) -> 在列表中搜索结果。哦! - 直接绑定也仍然会重现错误
哦原来,repro可以做得更小:***.com/questions/60908880/…
我为此在苹果错误报告系统中填写了一个错误。 Here 是雷达。
【参考方案1】:
SwiftUI TextField keyboard flashes and breaks typing in other languages https://developer.apple.com/forums/thread/128721
大家好,也遇到了这个问题。我相信这是一个无法解决的平台错误,我的解决方案只是使用包装好的 UIKit UITextField...这是我希望避免的。
【讨论】:
以上是关于当我绑定它的值时,SwiftUI TextField 的行为很奇怪(不能输入中文,偶尔退格会跳过一个字符)的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI - 绑定到选择器的变量与选择器的选定值不匹配
我的 SQL 函数有啥问题,当我尝试在 C# 中检索它的值时它总是返回 null?
SwiftUI:如何在函数计算 @State 值时同时更新视图?