Как добавить действие к ключу возврата UITextField?
У меня есть текстовое поле с кнопками и текстами. когда я нажимаю на текстовое поле, появляется клавиатура, и я могу писать на текстовом поле, и я также могу убрать клавиатуру, нажав на кнопку, добавив:
[self.inputText resignFirstResponder];
Теперь я хочу включить ключ возврата клавиатуры. когда я нажму на клавиатуру, клавиатура исчезнет, и что-то произойдет. Как я могу это сделать?
Ответы
Ответ 1
Убедитесь, что "self" подписывается на UITextFieldDelegate
и инициализирует inputText с помощью:
self.inputText.delegate = self;
Добавьте к "self" следующий метод:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (textField == self.inputText) {
[textField resignFirstResponder];
return NO;
}
return YES;
}
Или в Swift:
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == inputText {
textField.resignFirstResponder()
return false
}
return true
}
Ответ 2
С стилем расширения в swift 3.0
Сначала настройте делегат для вашего текстового поля.
override func viewDidLoad() {
super.viewDidLoad()
self.inputText.delegate = self
}
Затем совместим с UITextFieldDelegate
в вашем представлении расширения контроллера
extension YourViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if textField == inputText {
textField.resignFirstResponder()
return false
}
return true
}
}
Ответ 3
Хотя остальные ответы работают правильно, я предпочитаю делать следующее:
В viewDidLoad() добавьте
self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)
и определить функцию
@IBAction func onReturn() {
self.textField.resignFirstResponder()
// do whatever you want...
}
Ответ 4
Swift 4.2
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
// hide key board when the user touches outside keyboard
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
// user presses return key
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}