Я оставил этот вопрос свободным от конкретного контекста, потому что уверен, что он будет полезен для других:
У меня есть 2 выходных текстовых поля IB:
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
Я хочучтобы иметь возможность отключить кнопки на моей странице, пока оба не будут заполнены должным образом, поэтому я использую следующие делегаты в ViewDidLoad () (я добавил TextFieldDelegate в свой VC.)
override func viewDidLoad() {
textField1.delegate = self
textField2.delegate = self
}
У меня тогда естьнекоторые функции, которые я буду использовать для проверки формы и выполнения определенных действий, но для простоты скажем, она просто печатает на консоль.
Что я хочу сделать, это проверить только проверку в textField1, а не вполя 2.Т.е. желаемым выводом является то, что это печатается, когда пользователь начинает редактировать textField1, но если пользователь редактирует textField2, ничего не печатается.
В настоящее время я использую:
func textFieldDidBeginEditing(_ textField1: UITextField) {
print("TextField did begin editing method called")
}
Но это печать, когда либоtextField отредактирован.
Я думал, что указал _ textField1, поэтому не уверен, почему оба запускают его?
Есть некоторые ответы, решающие аналогичные проблемы для Swift 3 и более ранних версий.В частности, один ответ ссылался на эту ссылку http://sourcefreeze.com/uitextfield-and-uitextfield-delegate-in-swift/, что я нашел полезным, но застрял на этой ошибке.