UIView仅当有多个手指时通过触摸



My UIView已经通过手势识别器处理了单手指触摸,点击和平移都很好。

但是,我希望用两根手指进行的触摸可以传递到父视图,在该视图后面。(父视图是一个WKWebView,它有一个javascript生成的地图,我希望用户能够缩小缩放,即使其他视图在前面。当其他视图不在前面时,这也可以,但当然,当前视图在那里时,它不会通过触摸。(

我试图在前视图中使用以下任一项来检测这一点,但在这两种情况下,allTouches都是一个空集(零触摸(:


override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
if let event = event {
print("(event)")
if let touches = event.allTouches {
print("(event.allTouches)")
if touches.count > 1 {
return false
}
}
}

return super.point(inside: point, with: event)
}

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if let event = event {
print("(event)")
if let touches = event.allTouches {
print("(event.allTouches)")
if touches.count > 1 {
return nil
}
}
}

return super.hitTest(point, with: event)
}

如何继续使用现有的手势识别器,但通过多手指触摸进入超级视图?

与其说是一个实际的答案,不如说是一种变通方法,但以下是解决问题的方法…

前面的子视图没有用透明层覆盖所有父视图,而是将其缩小为只包括向用户实际显示信息和表单字段所需的小区域。

然后,我将单点触摸手势更改为添加到父视图,而不是添加到子视图。

因此,现在没有任何触摸被子视图捕获(除了它的表单字段和按钮(。

无论如何,这也许是处理我特殊情况的更好方法。所以我可能问错了问题(X/Y问题!(。

最新更新