2

я настроил ТАР Gesture распознавателя в моем ViewController с помощью раскадровки (так все кране в представлении, будет скрыть клавиатуру, если это один предъявляется)didSelectRowAtIndexPath находится в конфликте с Tap Gesture распознавателя

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

«Смешная вещь» заключается в том, что если я останусь в камере в течение 2 секунд или более, вызывается делегат didSelectRowAtIndexPath, а не TapGestureRecognizer.

Не могли бы вы, ребята, объяснить, что здесь происходит? где и почему я ошибаюсь?

+0

, когда клавиатура откроется, а затем добавьте жест нажатия, и когда клавиатура скроется, удалите жест выделения из представления, это один из способов сделать – Jaimish

+0

@Jaimish: Я сделал это, он отлично работает для метода TapGestureRecognizer, но теперь , на моем TableView ничего не вызывается, когда я нажимаю на ячейку, а didSelectRowAtIndexPath вызывается, когда я нажимаю на ячейку на 2 секунды или больше, я все еще удивляюсь, почему. –

+0

Вы попробовали ответить @Jan Greve? – Jaimish

ответ

4

UITapGestureRecognizer возможно cancels the touch event при успешном распознавании прикосновения.

Try установка

tapGestureRecognizer.cancelsTouchesInView = NO; 

Для более тщательного чтения по этой теме, have a look an the conceptual docs on gesture recognition.

+0

после обновления моего кода tahnks для Jaimish, я уверен, что у меня больше нет жестов, установленных на моем представлении, но didSelectRowAtIndexPath все еще вызывается только тогда, когда я остаюсь нажимаю на ячейка более чем на 2 секунды, ничто не вызывает, когда я нажимаю на нее (однако ячейка все еще «мигает», как следует, при однократном прослушивании, возможно ли, что код вызывает другой делегат, другой tahn didSelectRowAtIndexPath?) –

+0

Является ли ваш называется действие распознавателя жестов? Как вы «уверены»? Вы отобрали 'tableView (_ tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath?' На вашем делетете? Это тоже может запретить. – SmokeDispenser

+0

Да, я узнал, что в раскадровке, какой-то gestureRecognizer были установлены на не-существительные методы, после их удаления они отлично работают! Спасибо, кстати :) –

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