Подтвердить что ты не робот

Swift UITextFieldShouldReturn Return Key Tap

(iOS8, Xcode6, Swift) Используя Swift, как я могу нажимать кнопку "Возврат"?

Документ по следующей ссылке указывает использование метода textFieldShouldReturn:

// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool

Где я повесил трубку в части "_ textField". Я создал текстовое поле с помощью Storyboard. Как регистрировать уведомления для этого конкретного текстового поля? Мне нужно создать новый класс и установить его как делегат для этого текстового поля? Я назначаю текст, зарегистрированное имя, а затем каким-то образом подключаюсь к нему?

https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn

4b9b3361

Ответ 1

class ViewController: UIViewController,UITextFieldDelegate //set delegate to class

@IBOutlet var txtValue: UITextField //create a textfile variable

override func viewDidLoad() {
   super.viewDidLoad() 
   txtValue.delegate = self //set delegate to textfile 
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}

Ответ 2

Внедрить эту функцию

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}

И для делегата вы можете установить с помощью панели Утилиты/Инспектор подключений/делегат, а затем перетащить на ViewController (желтая кнопка в раскадровке)

Затем вам не нужно устанавливать делегат программно для каждого текстового поля

Ответ 3

Вам необходимо установить объект в качестве делегата текстового поля. Обычно это будет контроллер представления, в котором есть текстовое поле. Вам не нужно наследовать ни от какого другого класса, или, строго говоря, реализовать делегат (но вы можете реализовать UITextFieldDelegate, чтобы сделать вещи немного яснее.)

Ответ 4

В Swift 4.2 и Xcode 10.1

//UITextField delegate method
func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    if textField == TF1 {
        textField.resignFirstResponder()//
        TF2.becomeFirstResponder()//TF2 will respond immediately after TF1 resign.
    } else if textField == TF2  {
        textField.resignFirstResponder()
        TF3.becomeFirstResponder()//TF3 will respond first
    } else if textField == TF3 {
        textField.resignFirstResponder()
    }
    return true
}