如何使用Introspect检测SwiftUI Textfield上的Clear按钮

cgyqldqp  于 2022-10-23  发布在  Swift
关注(0)|答案(1)|浏览(183)

我在SwiftUI Textfield上使用Introspect将一个Clear按钮添加到文本字段。当点击Clear按钮时,我想在我的视图模型中切换布尔值。

TextField("", text: $viewModel.title)
              .textFieldStyle(.roundedBorder)
              .introspectTextField(customize: { $0.clearButtonMode = .always })
              .focused($isFocused)
              .submitLabel(.done)

当点击Clear按钮时如何执行代码?Introspect使UIKit方法可用于SWIFT UI文本字段。所以真正的问题可能是,我如何在UIKit UITextField上点击Clear按钮来执行一些代码。

bkhjykvo

bkhjykvo1#

尝试此操作,创建一个视图修改器:

struct ClearButton: ViewModifier {
@Binding var text: String

func body(content: Content) -> some View {
    HStack {
        content

        if !text.isEmpty {
            Button(
                action: { self.text = "" },
                label: {
                    Image(systemName: "delete.left")
                        .foregroundColor(Color(UIColor.opaqueSeparator))
                }
            )
        }
     } }
}

和内容视图

struct ContentView: View {
@State var sampleText: String = ""

var body: some View {
    NavigationView {
        Form {
            Section {
                TextField("Type in here...", text: $sampleText)
                    .modifier(ClearButton(text: $sampleText))
                    .multilineTextAlignment(.leading)
            }
        }
        .navigationTitle("Clear example")
    }
}

}
您可以在按钮的操作中执行您想要的操作:

相关问题