触地重复事件不起作用

Posted

技术标签:

【中文标题】触地重复事件不起作用【英文标题】:Touch down repeat event does not works 【发布时间】:2019-08-29 21:42:24 【问题描述】:

我希望我的按钮在用户单击它两次时更改其背景图像。为此,我正在使用 touchDownRepeat 事件。但是它不起作用。

button.addTarget(self, action: #selector(clickedRepeatOnPlate), for: .touchDownRepeat)

【问题讨论】:

【参考方案1】:

至于苹果的oficial documentation.touchDownRepeat

控件中的重复触地事件;对于此事件,UITouch tapCount 方法的值大于一。

用户每次点击按钮多次触发该事件,所以点击四次会触发该事件3次。

要仅触发双击,您需要创建一个UITapGesture 并在其numberOfTapsRequired 上设置2:

  let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickedRepeatOnPlate))
  tapGesture.numberOfTapsRequired = 2
  button.addGestureRecognizer(tapGesture)

编辑

如果需要获取发送者按钮作为函数参数,可以如下操作:

 func addDoubleTapEvent() 
   let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickedRepeatOnPlate(gesture:)))
   tapGesture.numberOfTapsRequired = 2
   button.addGestureRecognizer(tapGesture)  
 

 @objc func clickedRepeatOnPlate(gesture: UITapGestureRecognizer) 
     guard let button = gesture.view as? UIButton else  return 
     print(button.titleLabel?.text)
 

输出

Optional("button")

【讨论】:

【参考方案2】:

这让您可以设置双击视图的手势。

let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
tap.numberOfTapsRequired = 2
view.addGestureRecognizer(tap)

记住 UIButton 是 UIView

【讨论】:

以上是关于触地重复事件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Jquery .select()在焦点事件上不起作用[重复]

回发后更新面板中的jquery事件处理程序不起作用[重复]

提交事件 preventDefault() 在 os9 的 iPad/iPhone 上不起作用 [重复]

Jquery UI Touch Punch点击事件在Android应用程序中不起作用[重复]

我不明白为啥 CSS 转换在 keydown 上不起作用 [重复]

listview onclick toast在片段中不起作用[重复]