UITextField - подія кнопки повернення


101

Як я можу виявити, коли користувач натискав кнопку "повернення" клавіатури під час редагування UITextField? Мені потрібно це зробити, щоб відмовитись від клавіатури, коли користувач натиснув кнопку "повернення".

Дякую.

Відповіді:


212
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

Не забудьте встановити делегата в раскадровці ...

введіть тут опис зображення


47
Переконайтесь, що ваш контролер перегляду встановлений як делегат текстового поля.
zekel

1
Дякую. Для мене я встановив делегата через self.yourTextField.delegate = self;. Навіть кілька текстових полів також працюють.
haxpor

@Praxiteles Це тепер можна зробити в раскадровці, не вимагаючи делегування, перевірте відповідь нижче.
Блейк Локлі

51

Делегація не потрібна, ось однорівневий:

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

На жаль, ви не можете зробити це безпосередньо на своїй дошці розкадрування (ви не можете підключити дії до елемента керування, який випромінює їх у дошці розкадри), але ви могли це зробити через посередницьку дію.


1
Я просто хочу зазначити, що UIControlEventEditingDidEndOnExitподія надсилається лише в тому випадку, якщо textFieldShouldReturn:метод делегата повертає ДА (без попередньої відставки текстового поля).
alex-i

Не потрібно здійснювати делегування. Але, можливо, вам доведеться повернутися YESза цим методом.
mxcl

9

SWIFT 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

у функцію enterPress () введіть усі форми поведінки, яких ви хочете

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

8

Тепер ви можете зробити це за допомогою табло з використанням відправленої події "Did End on Exit".

На ваш підклас контролера перегляду:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

У своїй дошці повідомлень для потрібного текстового поля:

введіть тут опис зображення


Це правильна відповідь зараз.
Psiloc

3

Швидка версія за допомогою UITextFieldDelegate:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}

2

Швидкий 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

Після натискання кнопки введення тоді називається цей метод делегата. Ви можете захопити кнопку повернення з цього методу делегата.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.