it-swarm.com.ru

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

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

133
aden

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

@interface MYLoginViewController () <UITextFieldDelegate>

@end

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

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

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

264
Saurabh

В viewDidLoad объявляют: 

[yourTextField setDelegate:self];

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

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

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

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

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

override func viewDidLoad() {

    super.viewDidLoad()   
    myTextField.delegate = self
}

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

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}
12
Homam

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

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

textField.delegate = self

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

extension YourClassName: UITextFieldDelegate {
    func textFieldShouldReturn(textField: UITextField) -> Bool {
         textField.resignFirstResponder()
        return true
    }
}
11
Zaid Pathan

Swift 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
dimpiax

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

@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
    sender.resignFirstResponder()
    ...
}
1
Ferenc Kiss

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

[textField resignFirstResponder];
return YES;

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

1
Matrix

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

[textField setDelegate: self];

Затем в текстовом методе делегата

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

Хорошо, я думаю, что для новичка все может быть немного запутанным. Я думаю, что правильный ответ - это смесь всего вышеперечисленного, по крайней мере, в 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
Alex
[textField resignFirstResponder];

Использовать этот 

0
DURGESH Chaurasiya