Мое приложение использует вычисленный горизонтальный вид прокрутки. На каждой странице есть UIControls, к которому пользователь может нажать.Duplicate UIScrollView отменяет поведение с UIPanGestureRecognizer
UIScrollView отлично справляется с отменой прикосновений и ударов. Если пользователь начинает прокручивать достаточно быстро, это всегда салфетки. Если пользователь коснется достаточно долго, чтобы активировать выделенное состояние, прокрутка не пытается прокручиваться.
Я пытаюсь дублировать это поведение с подклассом UIPanGestureRecognizer, чтобы я мог реагировать на прокрутки вниз в моем scrollview. Однако я не могу заставить этот жест отменить в случае подсчета UIControls.
До сих пор я сделал следующее:
self.refreshGesture.cancelsTouchesInView = YES;
self.refreshGesture.delaysTouchesBegan = NO;
self.refreshGesture.delaysTouchesEnded = NO;
Это, повторяющая путь UIScrollView проходит прикасается на взгляды, но он не дублирует так, что пан жест распознаватель UIScrollView ныряет отменяют. self.refreshGesture
всегда срабатывает независимо от того, насколько медленно выполняется поиск пользователя или состояние UIControl.
Я пробовал установить делегата на мой жест, и это может быть путь. Но я не нашел комбинацию, которая работает. Например, просто проверка того, что касание начинается в UIControl, отменяется слишком часто. Я также попытался переопределить gestureRecognizerShouldBegin
в своих элементах управления, но это похоже на взломать и имеет далеко идущие последствия (например, помехи от жестов UITextView).
В этом GIF вы можете видеть, что элемент управления активируется при касании, и scrollview отменяет прокрутку, если это произойдет. Но мой вниз пан жест не отменяется таким же образом: