При нажатии на текстовое поле появляется клавиатура. Как скрыть это, когда пользователь нажимает клавишу возврата?
При нажатии на текстовое поле появляется клавиатура. Как скрыть это, когда пользователь нажимает клавишу возврата?
Ответы:
Сначала сделайте ваш файл делегатом для UITextField
@interface MYLoginViewController () <UITextFieldDelegate>
@end
Затем добавьте этот метод в ваш код.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Также добавьте self.textField.delegate = self;
В viewDidLoad
объявить:
[yourTextField setDelegate:self];
Затем включите переопределение метода делегата:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
напоминание. Определенно забыл, и код не работал ранее.
Попробуйте это в Swift ,
Шаг 1: Установите делегата как себя для вашегоtextField
textField.delegate = self
Шаг 2: Добавьте этот UITextFieldDelegate ниже вашего объявления класса,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
В Swift сделать так:
сначала в вашей ViewController
реализации это, UITextFieldDelegate
например.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Теперь добавьте делегата к a, TextField
в котором вы хотите отменить клавиатуру, когда return вызывается в viewDidLoad
методе, подобном приведенному ниже, или в том месте, где вы его инициализируете. Например,
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Теперь добавьте этот метод.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Попробуй это,
[textField setDelegate: self];
Затем в текстовом методе делегата
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
установить делегат UITextField
и переопределить textFieldShouldReturn
метод, в этом методе просто напишите следующие две строки:
[textField resignFirstResponder];
return YES;
Это оно. Перед написанием кода не забудьте установить делегат a UITextField
и установить тип возвращаемого ключа на «Готово» из окна свойств (команда + Shift + I).
Вы можете соединить «Основное действие, инициируемое» (щелкните правой кнопкой мыши на UITextField) с IBAction, и вы можете подать в отставку первый респондент (без делегирования). Пример (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
Установите делегат 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)
}
}
Если вы хотите скрыть клавиатуру для конкретной клавиатуры, используйте
[self.view resignFirstResponder];
Если вы хотите скрыть клавиатуру от просмотра, используйте[self.view endEditing:true];
Хорошо, я думаю, что для новичка все может быть немного запутанным. Я думаю, что правильный ответ - это смесь всего вышеперечисленного, по крайней мере, в 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
Определите этот класс, а затем настройте свое текстовое поле на использование класса, и это автоматически автоматизирует скрытую клавиатуру при автоматическом нажатии клавиши return.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
Тогда все, что вам нужно сделать в раскадровке, это установить поля для использования класса: