1

问题

我正在尝试使用以下逻辑拦截对视图的触摸:

  1. 判断是否UITouch.TouchType.pencil
  2. 如果没有.pencil,请通过触摸查看下方
  3. 否则.pencil,处理触摸。( UIGestureRecognizer)

我的尝试

经过一些研究,我发现允许通过下面的视图处理触摸的方法是在需要时使用point(inside:with:)并返回false

如果我想使用CGPoint位置来确定布尔值,这很好,但在我的情况下,我需要访问它UITouch本身。

我尝试使用UIEvent传递给函数来访问与该事件关联的触摸,但这只会返回一个空的UITouch.


这是我用来实现这种方法的子类:

class ThroughTouchesPKCanvasView: PKCanvasView {
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        print("Override point")
        if let event = event{
            print(event.allTouches) //prints: Optional(Set([]))
            return super.point(inside: point, with: event)
        } else {
            return super.point(inside: point, with: event)
        }
    }
}

因此,总而言之,如何根据用户是否使用苹果铅笔进行触摸将触摸传递到下面的视图?

4

0 回答 0