Не удалось подключить IBAction к UITextField в XIB (Swift)

На одном из моих ViewController я объявил:

@IBOutlet var priceTextField : UITextField!

Затем я попытался добавить следующее на основе того же UITextField:

 @IBAction func priceTextFieldChanged(sender: UITextField) { updateOutput() }

Когда я посмотрел на владельца файла XIB и на полученные действия, я по какой-то причине не смог подключить UITextField к этой функции. Я даже пытался перетащить этот UITextField в ViewController, но не смог увидеть опцию «Действие». Я проверил класс. Он связан с ViewController. Не знаю, что здесь делать.

Любой совет?


person ckraider    schedule 23.12.2014    source источник


Ответы (2)


UITextField не дает действия (sendAction:), поэтому его нельзя подключить.

Что вам нужно, так это создать делегат для textFieldDidBeginEditing или другого метода делегата UITextField и установить делегат UITextField для вашего экземпляра класса.

person zaph    schedule 23.12.2014
comment
позвольте мне привести пример ниже, чтобы убедиться, что я понимаю вашу точку зрения. - person ckraider; 23.12.2014

@Zaph, что-то вроде этого:

class ViewController: UIViewController,UITextFieldDelegate {

@IBOutlet var priceTextField : UITextField!

func textFieldDidEndEditing(textField: UITextField) {
if let value = sender.textIntegerValue() {
            pricetepper.ifInRangeSetValue(value)
        }
        updateOutput()
 }
} 

Не уверен, что выберу правильный метод. Спасибо.

person ckraider    schedule 23.12.2014
comment
Вы также должны установить делегата UITextField в класс: priceTextField.delegate = self - person zaph; 23.12.2014