Согласно документации Apple, клавиатура не уволят по умолчанию, когда пользователь нажимает вне UITextView
. Вам необходимо обращаться с этим программным способом, когда вы хотите отклонить клавиатуру, позвонив по номеру commentTextField.resignFirstResponder()
.
UITextFiled Reference about Managing the Keyboard
It is your application’s responsibility to dismiss the keyboard at the time of your choosing. You might dismiss the keyboard in response to a specific user action, such as the user tapping a particular button in your user interface. To dismiss the keyboard, send the resignFirstResponder message to the text view that is currently the first responder.
Есть много способов для пользователя может скрыть клавиатуру.
Ситуация 1: один, когда пользователь нажмите на кнопкуReturn на клавиатуре. Это именно то, что ваша следующая функция для:
func textFieldShouldReturn(textField: UITextField!) -> Bool {
commentTextField.resignFirstResponder();
return true;
}
Но главная проблема заключается в том, что данная функция не будет вызвана, потому что вы забыли установить UITextFieldDelegate
. Короче говоря, вам необходимо изменить определение класса на следующее:
class CommentsViewController: UIViewController, UITextFieldDelegate /*Add This*/, UITableViewDelegate, UITableViewDataSource {
// ....
}
Вы также должны установить удалить либо в раскадровке или кодом. Это то же самое, что и установка UITableViewDelegate
и UITableViewDataSource
. К Ниже приводится пример установки его в коде:
override func viewDidLoad() {
super.viewDidLoad()
commentTextField.delegate = self;
}
Ситуация 2: когда пользователь нажмите на табличном. Вы можете просто реализовать следующее UITableViewDelegate
, и оно должно работать.
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
commentTextField.resignFirstResponder();
}
Ситуация 3: когда пользователь крана на фоне зрения. Для этого нужен следующий код. Однако эта функция не будет вызвана, когда пользователь коснется таблицы. Если вы хотите знать, почему, пожалуйста, обратитесь к responder chain за дополнительной информацией.
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
// self.view.endEditing(true); // This line is redundant.
commentTextField.resignFirstResponder()
}
Подводя итог, нет быстрый и простой способ, чтобы закрыть клавиатуру сказать «когда пользователь нажимает вне TextView». Вам необходимо обрабатывать все различные ситуации в соответствии с вашими потребностями.
Вы получаете доступ к комментариюTextField и в вопросе вы сообщаете textview. Не могли бы вы подтвердить? – techloverr