як додати дію на ключ повернення UITextField?


91

У моєму поданні є кнопка та текстове текстове поле. коли я натискаю на текстове поле, з'являється клавіатура, і я можу писати на текстовому полі, а також я можу відхилити клавіатуру, натиснувши на кнопку, додавши:

[self.inputText resignFirstResponder];

Тепер я хочу увімкнути клавішу повернення клавіатури. коли я натисну на клавіатурі, клавіатура зникне, і щось станеться. Як я можу це зробити?


1
Можливий дублікат: stackoverflow.com/questions/4761648 / ...
wquist

Відповіді:


186

Переконайтеся, що "self" передплачує UITextFieldDelegateі ініціалізує inputText за допомогою:

self.inputText.delegate = self;

Додайте такий спосіб до "self":

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

Або в Свіфт:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}

11

З розширенням стилю в швидкій 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
    }
}

4

Хоча інші відповіді працюють правильно, я вважаю за краще робити наступне:

У viewDidLoad () додайте

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

і визначити функцію

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}

-1

Використовуйте механізм UIKit цільової дії для UIEvent, що надсилається з UITextField, коли натискається кнопка виконаної клавіатури.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.