2015-12-18 2 views
1

Я пытаюсь найти способ скрыть клавиатуру, как только пользователь закроет в другом месте экрана после фильтрации содержимого моего табличного представления.GestureRecognizer не работает на TableView

Но как-то, когда я добавляю UITapGestureRecognizer, мой TableView замерзает, и в приложение нельзя идти дальше.

Вот что я делаю:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
self.view.addGestureRecognizer(tap) 

func dismissKeyboard() { 

    view.endEditing(true) 
} 

Я попытался это на пустой ViewController с TextField, и она работает. Что мне не хватает? Есть ли способ добавить GestureRecognizer в представления таблиц? Потому что, как только я добавляю «Жест», он все ломает. Я также попытался использовать resignFirstResponder с теми же результатами.

Любые советы? Благодаря!

ответ

2

Попробуйте установить значение cancelsTouchesInView в значение false. Это значение по умолчанию равно true, установив его на false, вы позволяете касаниям отвечать на ваш жест, а затем переходите через ваш жест обратно к представлению, чтобы tableView также мог реагировать.

tap.cancelsTouchesInView = false 

Documentation on Apple

Обсуждение Выдержки из Docs:

Если это свойство истинно (по умолчанию) и приемник распознает его жест, штрихи этого жеста, которые в ожидании не доставляются на вид и ранее доставленные штрихи отменены через touchceCancelled: withEvent: сообщение, отправленное на просмотр. Если распознаватель жестов не распознает его жест, или если значение этого свойства ложно, представление получает все касания в последовательности с несколькими касаниями.

+0

Это было очень благодарно. Не могу поверить, что я не нашел ссылку, говорящую об этом. И почему это, в первую очередь, верно? Так как это противоречит другим касаниям и ввернуло большинство моих событий в мои представления Table/Collection. – Croisciento

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