• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

iOS -- 单击,双击手势冲突解决 Swift

武飞扬头像
hello_Jesse
帮助1

直接上代码,代码中有注释
第一种写法

  ///手势
    lazy var tapGestureRecognizer: UITapGestureRecognizer = {
        let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction(tap:)))
        return tap
    }()
   ///上次点击时的时间
    var lastTapTime:TimeInterval = 0
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .gray
        self.view.addGestureRecognizer(tapGestureRecognizer)
    }
    @objc func tapAction(tap:UITapGestureRecognizer) {
        let point = tap.location(in: self.view)
        print(point)
        let time = Date(timeIntervalSinceNow: 0).timeIntervalSince1970
        if time - lastTapTime > 0.25 {//单击
            //延迟执行 0.25秒
            self.perform(#selector(sigleTapAction), with: nil, afterDelay: 0.25)
        }else {//双击
            //取消performSelector方法注册过的方法,就是说当上面这个方法正在运行,比如希望0.25秒钟之后执行某一个方法,但是没到0.25秒钟的情况下取消performSelector
            NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(sigleTapAction), object: nil)
            print("双击手势")
        }
        lastTapTime = time
    }
    //Mark: 单击操作
    @objc func sigleTapAction() {
       print("单击手势")
    }
学新通

第二种写法

     ///手势 单击
    lazy var tapGestureRecognizer: UITapGestureRecognizer = {
        let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction(tap:)))
        tap.numberOfTapsRequired = 1
        return tap
    }()
    ///手势 双击
    lazy var tapGestureRecognizer2: UITapGestureRecognizer = {
        let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction2(tap:)))
        tap.numberOfTapsRequired = 2
        return tap
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .gray
        tapGestureRecognizer.require(toFail: tapGestureRecognizer2) //这句很关键
        self.view.addGestureRecognizer(tapGestureRecognizer)
        self.view.addGestureRecognizer(tapGestureRecognizer2)
    }
    @objc func tapAction(tap:UITapGestureRecognizer) {
         print("单击---手势")
    }
    @objc func tapAction2(tap:UITapGestureRecognizer) {
        print("双击---手势")
    }
   
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgaaigi
系列文章
更多 icon
同类精品
更多 icon
继续加载