我通过在顶部创建一个透明视图并覆盖hitTest()来实现passThroughView。
passThroughView应使用Apple Pencil的触摸,如果触摸类型不是来自Pencil,则它会将触摸传递到下面的视图。
问题是:
- hitTest中的参数“event”不包含触摸,因此无法在hitTest中检查触摸类型
- 我可以从touchesBegan获取触摸并检查触摸类型,但只有在hitTest返回true后才调用它
- 我子类化了UIWindow并覆盖了sendEvent(),但这个函数也在hitTest之后调用(我不知道为什么)
class WindowAbleToKnowTouchTypes: UIWindow {
override func sendEvent(_ event: UIEvent) {
if event.type == .touches {
// This get called after Hittest
if event.allTouches!.first!.type == .pencil {
print("This touch is from Apple Pencil")
}
}
super.sendEvent(event)
}
}
是否有任何方法可以检查touchType来决定传递或使用触摸?
1条答案
按热度按时间fdbelqdn1#
我最终使用了一种不同的方法,它可能对许多情况都有用:如果在hitTest()中无法获取touchType,我仍然可以使用GestureRecognize获取touchType:
在gestureRecognizer的目标函数中,可以通过以下方式获取UITouch: