Я пытаюсь сделать предупреждение о представлении ввода для текстового поля, так как у меня есть max. 3 варианта, и мой клиент хочет, чтобы он выглядел так.Предупреждение вместо клавиатуры для ввода в текстовое поле -> курсор остается в текстовом поле Swift2
В принципе нет проблем, я могу нажать на текстовое поле, в результате чего отображается предупреждение. После выбора значения в текстовом поле обновляется правильно, но затем курсор остается в текстовом поле (im, предполагая из-за крана, текстовое поле является первым ответчиком)
Проблема теперь в том, когда я нажимаю на тот же самый текстовое поле снова, когда курсор находится в нем, открывается клавиатура по умолчанию. Так что я могу сделать, чтобы это не сделать?
Я попытался следующие вещи на разных местах в коде:
resignFirstResponder()
becomeFirstResponder()
Кроме того, когда им в настоящее время редактирует другой текстовое поле с клавиатуры, им удалось показать уведомление, когда нажав на соответствующую TextField. это приводит к тому, что клавиатура закрывает предупреждение, так как им также не удается закрыть клавиатуру, когда это происходит.
Покушение против этого: (Записано в методах событий других TextFields
if (alertView != nil) {
alertView?.dismiss()
} //Not very professional, but still in development :)
Вот некоторые важные фрагменты кода, чтобы понять, как я построил его:
Эта функция является EditingDidBegin Событие TextField
@IBAction func TextboxUnitEditing(sender: UITextField) {
//One try of preventing the cursor (not working)
tableView.endEditing(true)
...
/* Unrelated Code here */
...
alertView = SwiftAlertView(...)
...
/* Unrelated Code here */
...
alertView.show()
}
метод делегата чеку
func alertView(alertView: SwiftAlertView, clickedButtonAtIndex buttonIndex: Int) {
//buttonIndex == 1 means, cancel was tapped
if (buttonIndex == -1) {
currentCell = nil
tableView.endEditing(true)
return
}
...
/* Change value in textfield */
}
Так что мой вопрос: что не так? Что мне нужно вызвать, чтобы избавиться от курсора? Если вам нужно что-то еще знать, скажите, пожалуйста, и я могу предоставить дополнительную информацию.
Заранее спасибо.
EDIT:
Решено. Вместо того, чтобы:
self.tableView.endEditing(true)
я должен был сделать это: не
dispatch_async(dispatch_get_main_queue(),{
self.tableView.endEditing(true)
})
Я немного потерял по этому вопросу; они печатают текст или нет. Если нет, и вы просто хотите сделать выбор из 3 вариантов, чем использовать alertController, вставьте какой-то код в ответ, так как здесь нет места. – user3069232
Спасибо за совет, но не то, что им нужно. Тот факт, что я забыл сказать вам, это то, что я поддерживаю ios7. Поэтому нет AlertController. Но я был способен решить эту проблему самостоятельно, так как единственное, что мне нужно было сделать, это отправить инструкцию tableView.endEditing (true) в основную очередь. – glace