使用Swift选择UITextField中的所有文本

iph*_*aaw 19 uitextfield swift

你如何以编程方式选择Swift文本字段中的所有文本?

var textField:UITextField = UITextField()
textField.frame = CGRectMake(2, 25, 200, 20)
textField.text = "hello"
textField.font = UIFont(name: "Verdana", size: 12)
textField.textColor = UIColor.blackColor()
textField.backgroundColor = UIColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)

或者至少使文本立即可编辑?

谢谢

安德鲁

B.S*_*.S. 33

它的工作方式与Objective-C相同:

textField.becomeFirstResponder()

textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Run Code Online (Sandbox Code Playgroud)


Al_*_*___ 15

textField.becomeFirstResponder()
textField.selectAll(nil)
Run Code Online (Sandbox Code Playgroud)


ldi*_*ual 6

如果您需要它与 SwiftUI TextField 一起使用,您可以使用Introspect

import Introspect

private class TextFieldObserver: NSObject {
    @objc
    func textFieldDidBeginEditing(_ textField: UITextField) {
        textField.selectAll(nil)
    }
}

struct ContentView {
    private let textFieldObserver = TextFieldObserver()
    var body: some View {
        TextField(...)
            .introspectTextField { textField in
                textField.addTarget(
                    self.textFieldObserver,
                    action: #selector(TextFieldObserver.textFieldDidBeginEditing),
                    for: .editingDidBegin
                )
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您不应覆盖,textField.delegate因为 SwiftUI 设置了自己的委托,该委托应该对您隐藏。