检测触摸何时开始在屏幕上的任何位置,即使是在 UIButton 上

Posted

技术标签:

【中文标题】检测触摸何时开始在屏幕上的任何位置,即使是在 UIButton 上【英文标题】:Detect when a touch begins anywhere on screen even on a UIButton 【发布时间】:2020-03-31 20:06:56 【问题描述】:

我正在寻找一种简单的方法来检测用户何时开始触摸屏幕,无论他们是触摸 UIButton 还是屏幕上的其他位置。

如果我在 ViewController 上使用 touchesBegan(...,它不会检测到对 UIButton 等控件的触摸。

ViewController 上有UITapGesturReconizer,但只有在点击完成时才会触发。我希望检测任何触摸何时开始。

【问题讨论】:

***.com/questions/19611601/… 【参考方案1】:

使用UILongPressGestureRecognizer 并将其minimumPressDuration 设置为0。在UIGestureRecognizerStateBegan 状态期间,它的作用类似于触地。

func setupTap() 
    let touchDown = UILongPressGestureRecognizer(target:self, action: #selector(didTouchDown))
    touchDown.minimumPressDuration = 0
    view.addGestureRecognizer(touchDown)


@objc func didTouchDown(gesture: UILongPressGestureRecognizer) 
    if gesture.state == .began 
        doSomething()
    

【讨论】:

以上是关于检测触摸何时开始在屏幕上的任何位置,即使是在 UIButton 上的主要内容,如果未能解决你的问题,请参考以下文章

Java - 检测鼠标是不是在屏幕上的任何位置按下

TapgestureRecognizer 将触摸检测为滚动视图

JavaFX:如何在屏幕上的任何位置检测鼠标/键事件?

如何检测 UI 图像上的触摸?

在 JPanel 上的任何位置检测鼠标进入/退出事件

Android:检测 ScrollView 何时停止滚动