SwiftUI中TextField无用户干预自动变更内容的异常问题
SwiftUI TextField 内容自动异常变更问题
问题现象
- 复现场景:新建SwiftUI应用,仅包含2个绑定
@State变量的TextField和一个用于打印值的Button(移除Button问题仍存在) - 核心异常行为:
- 在模拟器中,向第一个TextField输入
Bb,切换到第二个TextField时,Bb自动变为Vv - 输入
Dd后点击按钮,内容保持Dd并正常打印;切换到第二个TextField后,Dd自动变为Did,再次点击按钮会打印变更后的内容 - 其他异常案例:
Tt变为Ty,Oo变为Ok;但输入Do时无异常 - 触发条件:每次测试需重启应用,否则返回第一个TextField重新输入
Dd时内容不会变更;重启系统后问题仍存在
- 在模拟器中,向第一个TextField输入
- 键盘相关表现:
- 硬件键盘、模拟器内置键盘均会触发异常
- 使用硬件键盘时,若在选中TextField前按键,会出现两条「获取设备属性失败」的提示;选中TextField后输入则无额外提示
- 使用模拟器键盘仅会打印正常的输入日志
- 设备差异:
- iPhone 12模拟器中,
Dd变为首字母大写的Did - iPad Pro 9.7英寸及iPad Air模拟器中,
Dd变为首字母小写的did
- iPhone 12模拟器中,
- 额外验证:移除预览视图后问题依旧存在
复现代码
import SwiftUI struct ContentView: View { @State private var nameX = "" @State private var displayName = "" var body: some View { VStack{ TextField("Player Name", text: $nameX) TextField("Player Display Name", text: $displayName) Button ("save") { print (nameX) } } } }
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

