На мой взгляд, у меня есть кнопка и текстовое поле. когда я нажимаю на текстовое поле, появляется клавиатура, и я могу писать в текстовом поле, и я также могу отключить клавиатуру, нажав на кнопку, добавив:
[self.inputText resignFirstResponder];
Теперь я хочу включить клавишу возврата на клавиатуре. когда я нажму на клавиатуре, клавиатура исчезнет, и что-то произойдет. Как я могу это сделать?
ios
objective-c
iphone
swift
uitextfield
разибдеб
источник
источник
Ответы:
Убедитесь, что "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 }
источник
Со стилем расширения в 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 } }
источник
Хотя другие ответы работают правильно, я предпочитаю делать следующее:
В viewDidLoad () добавьте
self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)
и определим функцию
@IBAction func onReturn() { self.textField.resignFirstResponder() // do whatever you want... }
источник
Используйте механизм UIKit целевого действия для события UIEvent primaryActionTriggered, отправляемого из UITextField при нажатии кнопки «Готово» на клавиатуре.
textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
источник