2010-08-26 6 views
120

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

+12

Хорошая вещь о переполнении стека, что многие вопросы уже ответили, особенно простые из них. Поэтому, прежде чем спрашивать, пожалуйста, найдите ответы FIRST. См., Это просто: http://stackoverflow.com/search?q=iphone+hide+keyboard – Felixyz

+0

Это подкласс UITextfield, который динамически меняет UIReturnKey в соответствии с условием text/string: https://github.com/ codeinteractiveapps/OBReturnKeyTextField – CodeInteractive

ответ

246

Сначала сделайте свой файл делегата UITextField, а затем добавить этот метод в код ..

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    [textField resignFirstResponder]; 
    return YES; 
} 
+1

Любопытно, почему не нужно? Обычно вы увидите предупреждение в этом случае. – pixelfreak

+7

, если вы делаете делегат файла с помощью Interface Builder, тогда не требуется в .h файле .. – Saurabh

+1

добавление в .h файл и установка делегата в viewdidload [yourTextField setDelegate: self]; завершит это! – Umitk

1

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

[textField resignFirstResponder]; 
return YES; 

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

57

В viewDidLoad заявляют:

[yourTextField setDelegate:self];

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

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

+1 для напоминания 'setDelegate:'. Определенно забыл, и код не работал ранее. – piperchester

+2

Должен ли это быть textField, а не yourTextField, поскольку он передается? –

+0

- это способ сказать, что объявить делегата вашего текстового поля –

1

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

[textField setDelegate: self]; 

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

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

Это не самая лучшая практика для этого. – orafaelreis

+0

нуждается в UITextFieldDelegate в определении интерфейса. –

+0

@AlpAltunel: Спасибо за комментарий, прошло 4 года назад. –

11

В стрижа сделать так:
первым в 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

Второй шаг не требуется, если вы установите делегат в IB. –

8

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

Шаг 1: Set делегата, как я к вашему textField

textField.delegate = self 

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

extension YourClassName: UITextFieldDelegate { 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 
} 
0
[textField resignFirstResponder]; 

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

1

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

@IBAction func textFieldPrimaryAction(_ sender: UITextField) { 
    sender.resignFirstResponder() 
    ... 
} 
+0

Предпочтительный способ использования раскадровки. – lal

Смежные вопросы