使UIScrollView滚动条上的UIGestureRecognizer无效

问题描述 投票:0回答:1

我在UIScrollView的内部有一个UIView,其中包含UITapGestureRecognizer。我遇到了问题,快速谷歌搜索并没有帮助我。如果用户改为滚动视图,如何取消UIGestureRecognizer状态。我知道UIScrollView通知手势识别器它应该取消触摸时的复杂解决方案。我也和手势代表一起玩,但是没有成功。但是应该有一个更简单的解决方案,例如,我将UICollectionView放在该视图中,例如,它可以识别滚动并且不会通知其委托人已选中该单元格。

ios swift uiscrollview uigesturerecognizer
1个回答
0
投票

前几天我在做类似的事情,希望对您的情况有所帮助。在我的示例中,HammerB是一个UIButton,但是您可以使用其他类型。

        //for tripple tap
        let tap1 = UITapGestureRecognizer(target: self, action: #selector(trippleTapped))
        tap1.numberOfTapsRequired = 3
        tap1.accessibilityLabel = "\(hammerN)"
        hammerB.addGestureRecognizer(tap1)

        //for double tap
        let tap2 = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
        tap2.numberOfTapsRequired = 2
        tap2.accessibilityLabel = "\(hammerN)"
        tap2.require(toFail: tap1)
        hammerB.addGestureRecognizer(tap2)

        //for singleTap
        let tap3 = UITapGestureRecognizer(target: self, action: #selector(tappedB))
        tap3.numberOfTapsRequired = 1
        tap3.accessibilityLabel = "\(hammerN)"
        tap3.require(toFail: tap2)
        hammerB.addGestureRecognizer(tap3)

一般的想法是使用require(toFail: yourGesture)方法。

编辑:我最终遇到一个相关问题的解决方案是在我的方法中放置一个条件,并使用选择器作为目标,以检查应用程序的状态并创建“拖动”状态。我不确定您的应用程序是如何工作的,但是如果您放置一个条件语句来检查方法中某些“拖动”值,并且该值是true,则什么也不做。您也许可以绕过代表。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.