Как скрыть клавиатуру, когда я нажимаю клавишу возврата в UITextField? - PullRequest
143 голосов
/ 26 августа 2010

При нажатии на текстовое поле появляется клавиатура. Как скрыть это, когда пользователь нажимает клавишу возврата?

Ответы [ 10 ]

270 голосов
/ 26 августа 2010

Сначала сделайте ваш файл делегатом для UITextField

@interface MYLoginViewController () <UITextFieldDelegate>

@end

Затем добавьте этот метод в ваш код.

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

Также добавьте self.textField.delegate = self;

59 голосов
/ 04 сентября 2012

В viewDidLoad объявите:

[yourTextField setDelegate:self];

Затем включите переопределение метода делегата:

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
15 голосов
/ 17 декабря 2015

Попробуйте это в Swift ,

Шаг 1: Установите делегата в качестве собственного для вашего textField

textField.delegate = self

Шаг 2: Добавьте этот UITextFieldDelegate под объявлением класса,

extension YourClassName: UITextFieldDelegate {
    func textFieldShouldReturn(textField: UITextField) -> Bool {
         textField.resignFirstResponder()
        return true
    }
}
13 голосов
/ 17 июня 2015

В Swift сделать так:
Сначала в вашем ViewController реализуйте это UITextFieldDelegate Например,

class MyViewController: UIViewController, UITextFieldDelegate {
....
}

Теперь добавьте делегата к TextField, в котором вы хотите отменить клавиатуру, когда нажатие на клавишу возврата выполняется либо в методе viewDidLoad, как показано ниже, либо в месте инициализации. Например,

override func viewDidLoad() {

    super.viewDidLoad()   
    myTextField.delegate = self
}

Теперь добавьте этот метод.

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}
1 голос
/ 30 мая 2018

Свифт 4

Установите делегат UITextField в контроллере представления, field.delegate = self, а затем:

extension ViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // don't force `endEditing` if you want to be asked for resigning
        // also return real flow value, not strict, like: true / false
        return textField.endEditing(false)
    }
}
1 голос
/ 05 августа 2017

Вы можете подключить «Основное действие, инициируемое» (щелкните правой кнопкой мыши на UITextField) с IBAction, и вы можете уйти в отставку первым ответчиком (без делегирования).Пример (Swift 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
    sender.resignFirstResponder()
    ...
}
1 голос
/ 31 января 2014

Попробуйте это,

[textField setDelegate: self];

Затем в методе делегата textField

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
1 голос
/ 26 августа 2010

установить делегат UITextField и метод over 100, textFieldShouldReturn, в этом методе просто напишите следующие две строки:

[textField resignFirstResponder];
return YES;

вот и все. Перед написанием кода не забудьте установить делегат UITextField и установить тип возвращаемого ключа на «Готово» в окне свойств.

0 голосов
/ 28 декабря 2018

Хорошо, я думаю, что для начинающих вещи могут быть немного запутанными.Я думаю, что правильный ответ - это смесь всего вышеперечисленного, по крайней мере, в Swift4.

Либо создайте расширение, либо используйте ViewController, в котором вы хотели бы использовать это, но обязательно реализуйте UITextFieldDelegate.Для повторного использования я нашел, что проще использовать расширение:

extension UIViewController : UITextFieldDelegate {
    ...
}

, но альтернатива также работает:

class MyViewController: UIViewController {
    ...
}

Добавить метод textFieldShouldReturn (в зависимости отваш предыдущий параметр, либо в расширении, либо в вашем ViewController)

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

В вашем методе viewDidLoad установите для делегата текстового поля значение self

@IBOutlet weak var myTextField: UITextField!
...

override func viewDidLoad() {
    ..
    myTextField.delegte = self;
    ..
}

Это все.Теперь, когда вы нажимаете return, должен вызываться textFieldShouldReturn.

0 голосов
/ 22 февраля 2016
[textField resignFirstResponder];

Используйте это

...