Используйте 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
Другие вопросы по тегам