Обработка события касания подпредставлением UIScrollView при прокрутке

У меня есть собственный подкласс UIScrollView с некоторыми представлениями содержимого внутри. В некоторых из них у меня есть UITapGestureRecogniser. Все работает нормально, когда прокрутка не прокручивается. Но когда он прокручивает просмотры контента, он не получает действия касания. Какое самое простое решение для обработки действия касания с помощью подпредставления во время прокрутки прокрутки?

Детали:

MyScrollViewпрокручивается горизонтально. Он содержит много просмотров контента (, например.MyContentView). Каждый MyContentViewимеет ширину около одной трети ширины MyScrollView. Таким образом, в данный момент существует около 3 -4 видимых MyContentViewэлементов. Основное поведение MyScrollViewзаключается в том, чтобы 1 )убедиться, что после прокрутки один из элементов MyContentViewбудет в центре экрана, и 2 )прокрутить к центру MyContentView, если пользователь нажмет на это . Итак, главный ответ, который я надеюсь получить, заключается в том, как «правильно» реализовать обработку нажатия в MyContentView, пока MyScrollViewзамедляется.

Я нашел несколько одинаковых вопросов и ответов, но ни один из них меня не удовлетворил. Лучше всего было реализовать gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:делегата UITapGestureRecogniser. Но в этом случае я иногда (когда постукиваю, слегка перетаскиваю и отпускаю палец, так что постукивание становится узнаваемым (давайте назовем его квази-стуком))имеют как события касания, так и события прокрутки, и это приводит к ошибкам для меня, даже если прокрутка не прокручивается, когда я начинаю касание. Когда пользователь совершает квазикасание , мое приложение пытается прокрутить до элемента MyContentViewс постукиванием, а затем немедленно обрабатывает обычную прокрутку. Это кажется еще более ужасным из-за того, что некоторые другие функции начинают выполняться после нажатия (и не должны выполняться при обычной прокрутке ).

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

8
задан Lloyd18 24 July 2012 в 14:43
поделиться