Используйте UITextFieldDelegate для нескольких полей
У меня есть следующий код, чтобы запретить пользователю вводить более одного периода .
в UITextField
, это работает нормально, но я хотел бы сделать то же самое с другими двумя textFields, как это можно сделать?
Я пытался назначить delegate
к нескольким полям, и это не совсем работает, это работает только на первом, который приходит первым ответившим.
class UserInputViewController: UIViewController, UITextFieldDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.myTextField.delegate = self
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let periodsInTextField = myTextField.text!.componentsSeparatedByString(".").count - 1
if (periodsInTextField > 0 && string == "."){
return false
}
return true
}
}
РЕДАКТИРОВАТЬ (Ответ): Вот как это должно быть сделано на основе ответа @ KKRocks ниже.
class UserInputViewController: UIViewController, UITextFieldDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.myTextField.delegate = self
self.secondTextField.delegate = self
self.thirdTextField.delegate = self
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let periodsInTextField = textField.text!.componentsSeparatedByString(".").count - 1
if (periodsInTextField > 0 && string == "."){
return false
}
return true
}
}
1 ответ
Решение
Пожалуйста, измените эту строку на
От:
let periodsInTextField = myTextField.text!.componentsSeparatedByString(".").count - 1
Кому:
let periodsInTextField = textField.text!.componentsSeparatedByString(".").count - 1