如何忽略特定事件,使其在ZStack中传递到下面的视图



我正在开发一个小型PencilKit应用程序,并在ZStack中在其顶部放置了一个UIViewRepresentable来处理手势输入(在屏幕周围旋转、缩放和平移画布(。但我很难让俯视图忽略PencilKit在下面画布上绘制的输入。当手势视图处于活动状态时,任何东西都无法进入画布。关闭命中测试或用户交互将禁用手势视图的所有输入。有没有办法将某些输入传递到下面的视图?

如果不显示实际实现,在这种情况下可能很难帮助您,但您可以尝试覆盖UIViewhitTest函数。例如:

// by turning on this flag 
// the view would pass all events to the 
// underlying view
var passEventsToUnderlyingViews = false
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
guard passEventsToUnderlyingViews else {
return super.hitTest(point, with: event)
}
let view = super.hitTest(point, with: event)
return view == self ? nil : view
}

最新更新