Я использую UITextfied
при нажатии на текстовую клавиатуру, но когда я нажимаю returnклавишу, клавиатура не исчезает. Я использовал следующий код:
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
return true;
}
метод resignfirstresponder не входит в функцию.
ios
swift
uitextfield
Ашвинкумар Мангрулкар
источник
источник
Ответы:
Вы можете заставить приложение отклонить клавиатуру, используя следующую функцию
Вот полный пример, чтобы лучше проиллюстрировать это:
Источник кода: http://www.snip2code.com/Snippet/85930/swift-delegate-sample
источник
UITextFieldDelegate
!func textFieldShouldReturn(textField: UITextField) -> Bool {
поменяй наfunc textFieldShouldReturn(_ textField: UITextField) -> Bool {
return true
Часть этого только говорит текстовое поле это разрешено ли не возвращаться.Вы должны вручную указать текстовое поле, чтобы закрыть клавиатуру (или каков ее первый респондент), и это делается
resignFirstResponder()
следующим образом:источник
UITextFieldDelegate
?Добавьте
UITextFieldDelegate
к объявлению класса:Подключите
textfield
или напишите это программноустановите ваш контроллер представления так, как загружал делегат текстовых полей в представлении:
Добавьте следующую функцию
при этом ваша клавиатура начнет отключаться, касаясь за пределами текстового поля так же, как и нажатием клавиши возврата.
источник
UITextFieldDelegate
... большое спасибо!Swift 4.2 - делегат не требуется
Вы можете создать выход действия из UITextField для « Первичного действия, инициируемого » и отправить в отставку первого респондента по параметру отправителя, переданному в:
Супер просто.
(Спасибо 60-секундному видео Скотта Смита за сообщение об этом: https://youtu.be/v6GrnVQy7iA )
источник
Решение Simple Swift 3: добавьте эту функцию в ваши контроллеры представления с текстовым полем:
Затем откройте ваш помощник редактора и убедитесь, что ваш Main.storyboard находится на одной стороне вашего представления, а требуемый файл controller.swift вида находится на другой. Щелкните по текстовому полю и затем выберите на правой панели утилит панель «Показать Инспектор соединений». Управляйте перетаскиванием из «Did End on Exit» в указанную выше функцию в вашем файле swift. Повторите эти действия для любого другого текстового поля в этой сцене и укажите ссылку на ту же функцию.
источник
@RSC
для меня критическое дополнение в Версии 6.2 Xcode (6C86e) находится в
override func viewDidLoad()
Пытался заставить его работать с ключом возврата часами, пока я не нашел твой пост, RSC. Спасибо!
Кроме того, если вы хотите скрыть клавиатуру, если вы касаетесь где-либо еще на экране:
источник
Чтобы получить автоматическое отклонение клавиатуры, я поместил этот код в один из методов класса моего пользовательского текстового поля:
Замените название вашей торговой точки на
textField
.источник
mytextfield.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
(версия Swift 5),viewDidLoad
но ни возврат, ни нажатие где-то за пределами текстового поля не работали. Я получил текстовые поля, создав каждый из них.viewDidAppear
методе этого класса.UIAlertController.addTextField(configurationHandler: {(textField: UITextField!) in textField.delegate = self textField.addTarget(self, action: #selector(MySubclass.textChanged(_:)), for: .editingChanged) })
Это может быть слишком специфично для моего случая, но, надеюсь, это поможет. Попробуйте сделать звонок внутриviewDidAppear
и согласиться с любым делегатом, если это необходимо.Другой способ сделать это, который в основном использует раскадровку и легко позволяет вам иметь несколько текстовых полей:
Соедините все свои текстовые поля для этого контроллера представления с этим действием над
Did End On Exit
событием каждого поля.источник
Я бы посоветовал начать Класс из RSC:
}
источник
Когда пользователь нажимает кнопку «Готово» на текстовой клавиатуре, генерируется событие «Завершить при выходе»; в то время мы должны указать текстовому полю отказаться от управления, чтобы клавиатура исчезла. Для этого нам нужно добавить метод действия в наш класс контроллера. Выберите ViewController.swift и добавьте следующий метод действия:
Выберите Main.storyboard в Project Navigator и вызовите инспектор соединений. Перетащите из круга рядом с надписью «Завершить при выходе» на желтый значок View Controller в раскадровке и отпустите. Появится небольшое всплывающее меню с названием одного действия, которое мы только что добавили. Нажмите на действие textFieldDoneEditing, чтобы выделить его и все.
источник
Вот обновление Swift 3.0 для комментария Peacetype:
источник
Я ненавижу добавлять ту же функцию для каждого UIViewController. Расширяя UIViewController для поддержки UITextFieldDelegate, вы можете обеспечить поведение по умолчанию «нажатие возврата».
Когда вы создаете новый UIViewController и UITextField, все, что вам нужно сделать, это написать однострочный код в вашем UIViewController.
Вы даже можете пропустить этот однострочный код, перехватив делегат в Main.storyboard. (Используя "Ctrl" и перетащите из UITextField в UIViewController)
источник
Свифт 3
Добавьте этот код ниже к вашему VC
Работает для меня
источник
Убедитесь, что ваш делегат textField настроен на контроллер представления, из которого вы пишете код, связанный с текстовым полем.
источник
стриж
Используя опциональную функцию из
UITextFieldDelegate
.false
означает, что поле можно попросить подать в отставку.true
- уйти в отставку.источник
тогда вы используете эту функцию
источник
Вы можете поместить это в любом месте, но не в UIButton
тогда вы можете поместить этот код в кнопку (также, например):
это сработало для меня
источник
В контроллере представления вы используете:
источник
Вы должны соединить UITextfied с контроллером делегата представления, чтобы эта функция называлась
источник
Все в одном Скрыть клавиатуру и переместить вид на клавиатуре Открыть: Swift 5
источник