Wie kann ich die maximale Länge von UITextField in Alert einstellen?Swift 4 UITextField maximale Länge in Alert
Was ist die neueste Best Practice dafür in Swift 4?
Dies ist mein Codebeispiel, aber es wird abstürzen, weil UITextField am Anfang nicht existiert.
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!
let limitLength = 10
@IBOutlet weak var player1: UIButton!
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= limitLength
}
@IBAction func player1Action(_ sender: UIButton) {
let alertController = UIAlertController(title: "Please enter you name", message: "Maximum 10 characters", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: {
alert -> Void in
let textField = alertController.textFields![0] as UITextField
// do something with textField
self.player1.setTitle("\(textField.text!)", for: .normal)
}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alertController.addTextField(configurationHandler: {(textField : UITextField!) -> Void in
textField.placeholder = "Name"
})
self.present(alertController, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
textField.delegate = self
}
Vielen Dank für Ihre Zeit.
Bitte geben Sie eine Erklärung für den Code –
Okay, Sie können diese Klasse für mehr als ein Textfeld verwenden. Fügen Sie einfach die Klasse MaxLengthTextField zu einem beliebigen Textfeld hinzu. Dann können Sie eine Anzahl von Zeichen im Textfeld vom Storyboard ändern. Ps.s. Das ist schnell 3,0 –
Vielen Dank. Können Sie die Antwort bearbeiten? Dann wird es für Leute hilfreich sein, die es lesen. Ich werde dann upvote –