有些需求须要咱们区分开单次点击和屡次点击事件, 其实这很简单,只要使用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("双击") }