通过多个 UIView 注册触摸

Posted

技术标签:

【中文标题】通过多个 UIView 注册触摸【英文标题】:Register touch on passing through multiple UIViews 【发布时间】:2015-12-31 08:24:05 【问题描述】:

我正在尝试检测在用 Swift 编写的 ios 应用程序中传递多个 UIView 时的触摸。

下图应阐明用户交互:

每个彩色图块都是UIView。 当手指按在紫色瓷砖上时,我可以使用touchesBegan 来注册触摸。然后我可以通过touchesMoved跟踪手指,以在手指从紫色瓷砖移动到棕色瓷砖时取消触摸。

现在,基本上我想在棕色瓷砖上触发touchesBegan 方法,直到手指进入蓝色瓷砖。同样,这应该会触发棕色的 touchesEnded 和蓝色的 touchesBegan

如何在 iOS 中实现这一点?

【问题讨论】:

【参考方案1】:

尝试添加UIPenGesture ...

并在选择器方法中检测触摸区域并根据要求在图块上更改颜色...

【讨论】:

实用教程ioscreator.com/tutorials/dragging-views-with-gestures ... 那么视图需要相互了解。我希望当你在 UIView 上移动时 touchesBegan 会触发,这样它们就不需要互相认识了。 在所有这些图块的父视图上添加手势,并检查棕色图块中是否有触摸坐标内容...您可以获得触摸状态,因此可以检测到开始结束...

以上是关于通过多个 UIView 注册触摸的主要内容,如果未能解决你的问题,请参考以下文章

通过移动 UIView 中的区域传递触摸事件

UIView 只有在超过一根手指的情况下才能通过触摸?

如何使触摸事件通过 UIView(类似于 CSS 中的 pointer-events:none)?

获取触摸 UIView 的手指数

如何使用多个部分检测UITableViewCell的UIView上的触摸?

如何检查多个 UIView 子视图相互重叠显示的贝塞尔路径内的触摸事件?