gpt4 book ai didi

警报中的 Swift 4 UITextField 最大长度

转载 作者:搜寻专家 更新时间:2023-11-01 05:55:52 25 4
gpt4 key购买 nike

如何在 Alert 中设置 UITextField 的最大长度?

Swift 4 中这方面的最新最佳实践是什么?

这是我的代码示例,但它会崩溃,因为 UITextField 一开始不存在。

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

}

非常感谢您的宝贵时间。

最佳答案

您实际上不需要创建 UITextField 的实例。 addTextField 闭包将为您返回 UITextField。您需要做的就是在闭包中设置该文本字段的委托(delegate)。

class ViewController: UIViewController, UITextFieldDelegate {
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
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"
textField.delegate = self // Set the delegate
})

present(alertController, animated: true, completion: nil)
}

override func viewDidLoad() {
super.viewDidLoad()
}
}

关于警报中的 Swift 4 UITextField 最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com