I have a vertically-scrolling UIScrollView
. I want to also handle horizontal pans on it, while allowing the default vertical scroll behavior. I've put a transparent UIView
over the scroll view, and added a pan gesture recognizer to it. This way I can get the pans just fine, but then the scroll view doesn't receive any gestures.
I've implemented the following UIPanGestureRecognizerDelegate
methods, hoping to limit my gesture recognizer to horizontal pans only, but that didn't help:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
// Only accept horizontal pans here.
// Leave the vertical pans for scrolling the content.
CGPoint translation = [gestureRecognizer translationInView:self.view];
BOOL isHorizontalPan = (fabsf(translation.x) > fabsf(translation.y));
return isHorizontalPan;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return (otherGestureRecognizer == _scrollView.panGestureRecognizer);
}
[panGesture setCancelsTouchesInView:NO];
? Simply returning YES inshouldRecognizeSimultaneouslyWithGestureRecognizer
might help you figure out where the problem is as well. – Mick MacCallum