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
Ответы
Ответ 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
}