首页 > 解决方案 > swiftui Textfield 将光标移动到每次更改结束

问题描述

如果我将绑定传递给 TextField,那么每当您编辑文本的中心时,光标将在每个字符插入后跳到行尾。这只发生在实际设备 (iPadOS) 上。模拟器不显示此行为。我的解决方法是创建一个状态变量,我使用绑定中的值设置 onAppear 并复制 onEditingChanged。然后我将此状态变量传递给 TextField 而不是直接传递给绑定变量。这打破了唯一的事实来源。

有没有人有更好的解决方案。

struct infoSheetView: View {
   
    @Binding var cameraURL: String

    @State var tmpCameraURL: String = ""
 
    var body: some View {
        VStack {
            
            Form{
                Section(header: Text("Camera").font(.title)) {
                    TextField("Camera URL", text: $tmpCameraURL, onEditingChanged:  {_ in
                        cameraURL = tmpCameraURL
                    }).autocapitalization(.none).disableAutocorrection(true)
                        
           
            }
        }.frame(width:400,height:390)
        
        .onAppear() {
            tmpCameraURL = cameraURL
        }
    }
    
}

标签: swiftuitextfield

解决方案


推荐阅读