Конфликт с UIPanGestureRecognizer на суперпредставлении UITableView - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать нечто похожее на меню в Apple Maps на iOS.

В этом проекте Xcode Я прикрепляю UIPanGestureRecognizer к виду VC, и когда происходит панорамирование, перемещаем вертикально UITableView с отключенной прокруткой.

Проблема заключается в том, что каждый раз после окончания панорамирования метод didSelectRow вызывается только после второго касания где-то в UITableView. Конечно, я бы хотел, чтобы он вызывался после первого касания.

Самое смешное, что ошибка не произойдет, если я включу прокрутку таблицы, а в делегате распознавателя жестов будет shouldRecognizeSimultaneouslyWith, возвращающее true.

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

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 26 августа 2018

Я не очень хорошо понимаю, что вы говорите. Но я думаю, что главная проблема с «Chain Responder». Когда вы используете PanGestureRecognizer и UITableView свойство isScrollEnable = false в цепочке ответчика, PanGestureRecognizer вызывается первым, и система ожидает, что произойдет сбой или событие не будет обработано, затем оно будет передано следующий в цепочке ответчиков, который является UITableView. По этой причине для вызова функции didSelectRow требуется слишком много времени. Я предлагаю вам создать новый UIView и вставить его в ViewController в раскадровке и вставить UITableVIew вне этого UIView, затем связать PanGestureRecognizer с этим новым UIView. Таким образом, цепочка респондента не вступает в конфликт с обоими, потому что система может обнаружить, когда перетаскивание находится в новом UIView, и вызвать только к PanGestureRecognizer, а когда оно находится в UITableView, вызовет didSelectRow

С наилучшими пожеланиями Напишите, если это не разрешит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...