Swift - 单击手势与双击手势(多击手势)共存响应方法

有些需求须要咱们区分开单次点击和屡次点击事件, 其实这很简单,只要使用require(toFail:)  方法,设置响应点击次数就能够了,demo以下 :ide

override func viewDidLoad() {
        super.viewDidLoad()
        
        let redView =UIView.init(frame:CGRect(x:CGFloat(100), y:CGFloat(100), width:CGFloat(100), height:CGFloat(100)))
        redView.center =CGPoint(x:self.view.frame.width / 2, y: self.view.frame.height / 2)
        view.addSubview(redView)
        redView.backgroundColor =UIColor.red
        
        let singleTap =UITapGestureRecognizer.init(target:self, action: #selector(handleSingleTap(tap:)))
        let moreTap =UITapGestureRecognizer.init(target:self, action: #selector(handleMoreTap(tap:)))
        
        moreTap.numberOfTapsRequired =2//触发响应的点击次数
        
        redView.addGestureRecognizer(singleTap)
        redView.addGestureRecognizer(moreTap)
        
        /** 
            检测手势识别器方法

            moreTap.require(toFail: singleTap)
            优先检测singleTap,若singleTap检测不到,或检测失败,则检测moreTap,检测成功后,触发方法
            singleTap.require(toFail: moreTap)
            优先检测moreTap,若moreTap检测不到,或检测失败,则检测singleTap,检测成功后,触发方法
         */
        singleTap.require(toFail: moreTap)
    }

    @objcprivatefunc handleSingleTap(tap:UITapGestureRecognizer) {
        print("单击")
    }
    

    @objcprivatefunc handleMoreTap(tap:UITapGestureRecognizer) {
        print("双击")
    }