2016-03-13 3 views
-1

У меня есть пользовательский вид, который отображает список слов, введенных с UITextField.iOS 9 (Swift 2) - resignFirstResponder() выдает ошибку

Для простого и быстрого ввода я намеревался не скрывать клавиатуру после нажатия клавиши возврата, но вместо этого я возвращаю текстовое поле и позволяю пользователю продолжать вводить больше слов. Мне нужно скрыть клавиатуру, когда пользователь выполнил ввод слов, а это означает, что пользователь выходит за пределы текстового поля.

Но следующая реализация дает мне неперехваченное исключение при кранах вне текстового поля.

Интересно, вызывает ли пустая строка проверка, связанная с resignFirstResponder(), но мне нужно убедиться, что в этом поле содержатся некоторые значения.

Я думаю, self.endEditing(true) не имеет отношения к моей ситуации, так как нет способа узнать, когда пользователь хочет закончить редактирование, если не коснуться текстового поля.

override func viewDidLoad() { 

    super.viewDidLoad() 

    textField.delegate = self 
    textField.returnKeyType = UIReturnKeyType.Done 

} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    textField.resignFirstResponder() 
} 

func textFieldShouldReturn(textField: UITextField) -> Bool { 

    if let text = textField.text { 
     addTextToList() 
    } 
    textField.text = "" 

    return true 
} 

неперехваченное Исключение составляет

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CookMate.CreateRecipeVC ingredientTextFieldDidChange:]: unrecognized selector sent to instance 0x7f80f1de3370' 
+0

Зачем? – nhgrif

+0

извините..Я забыл добавить. *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [CookMate.CreateRecipeVC componentientTextFieldDidChange:]: непризнанный селектор, отправленный в экземпляр 0x7f80f1de3370' –

+1

Что такое 'componentientTextFieldDidChange:' в ошибке? – tktsubota

ответ

1

ли вы установить выход через раскадровку, что вы потом удалены с именем ingredientTextFieldDidChange? Щелкните правой кнопкой мыши на textField в Раскадке, чтобы узнать, существует ли это, затем нажмите x, чтобы удалить его.

+0

Вы правы. Я играл с этим событием раньше, и он все еще был связан с полем. Я удалил его, и теперь он работает нормально. Благодарю. –

+0

Добро пожаловать. Это одна из вещей, которую нужно проверять всякий раз, когда возникает такая ошибка (и до сих пор укусит меня). – sschale

0

Вы можете использовать этот метод работает каждый раз для меня

UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil) 

Вы могли бы найти это полезным.

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