获取触摸 UIView 的手指数

Posted

技术标签:

【中文标题】获取触摸 UIView 的手指数【英文标题】:Getting the number of fingers touching a UIView 【发布时间】:2017-04-18 14:00:33 【问题描述】:

我想根据当前的触摸次数来更改 UIView 的颜色。我已经设法通过一次触摸来创建它:

class colorChangerViewClass: UIView 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
        setColor(color: .blue)
        print("touchesBegan")
    

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 
        setColor(color: .green)
        print("touchesEnded")
    


    func setColor(color: UIColor) 
    self.backgroundColor = color
    

但我正在努力实现多点触控。我觉得我不明白这里的东西。

UIView 是否有一个属性来检查当前有多少手指在触摸它?

我可以检查每次新的 touchesBegan 或 touchesEnded 发生时。

【问题讨论】:

【参考方案1】:

首先在您的子类上启用多点触控

self.isMultipleTouchEnabled = true

然后在你的触摸事件函数中,你可以从你的 UIView 类中获取所有的触摸事件。

let touchCount = event?.touches(for: self)?.count

【讨论】:

event?.touches(for: self)?.count 可能并不总是有效,event?.allTouches?.count 也可以在 touchesBegan 方法中有所帮助。【参考方案2】:

确保UIViewisMultipleTouchEnabled = true,默认为false

然后改touchesBegan方法

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
        setColor(color: .blue)
        let touchCount = event?.touches(for: self)?.count
    

【讨论】:

以上是关于获取触摸 UIView 的手指数的主要内容,如果未能解决你的问题,请参考以下文章

没有uigesturerecognizer的ios触摸位置

调整大小的 UIView 上没有触摸事件

通过Swift中的触摸检测应用程序何时处于活动状态或非活动状态[重复]

如何检测 UIView 上的触摸并检测单击哪个 UIView 类似于 UIButton 上的触摸?

如何在我的触摸位置获取层次结构中的所有视图 - Swift

将触摸事件从覆盖 UIView 转发到 UIWebView / 如何从代码将触摸事件发送到 uiwebview