如何有一个UIScrollView滚动和手势识别器?

我在UIScrollView上有一个手势识别器,但是它几乎不会被调用,因为UIScrollView吃掉所有的手势。

我部分解决了这个问题: [scrollView.panGestureRecognizer requireGestureRecognizerToFail:rightSwipe]; 但是,这一行导致我的识别器总是被接受(所需的行为),滚动视图不滚动。

也就是说,当您滚动时,识别器将被接受,但视图不会滚动。

我怎样才能解决这个问题呢,还是有其他解决scheme?

谢谢!

制作UIScrollView的子类。 在你的新子类中添加这个方法

 - (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UISwipeGestureRecognizer *)otherGestureRecognizer { return YES; } 

让你的scrollView类到你的新的scrollview子类。

Swift方法,
需要将UIGestureRecognizerDelegate添加到您的类中:

 class ViewController: UIViewController, UIGestureRecognizerDelegate { 

需要将其代理设置为self:

 override func viewDidLoad() { super.viewDidLoad() var scrollView = UIScrollView(frame: self.view.frame) scrollView.delegate = self } 

在你的class级方法中添加这个部分来激活同时的手势:

 func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true }