我有一个带有长按手势识别器的视图。
在我的应用中,我必须暂时在其上放置另一个视图,但底层视图所在的区域是透明的,因此用户仍然可以看到下面的视图。
我在新的顶视图中添加了一个UILongPressGestureRecognizer。当用户长按他们可以看到的视图(位于顶视图下方)时,我会在顶视图中识别它。我取消它(使用g.enabled = NO;
),然后我解除了我的顶视图。
现在,我想让用户想要长按的视图使其手势识别器触发。有没有办法做到这一点?
更新
基于@ matt在评论中的建议我从顶视图中移除了手势识别器 - 这给了我更多的洞察和控制 - 但我还没有到达那里。
我已经尝试使用hitTest:withEvent:
来忽略透明区域中的事件,但到目前为止我还没有完成工作(让事件在底层视图中启动一个手势)。
现在我正试图通过让我的顶视图将它们发送到它的视图控制器来重新路由touchesBegan:withEvent:
,以查看它是否会从那里进一步传播,但我还没有让它工作。< / p>
我仍在调试以确定触摸是否被发送到底部视图 - 我不确定这是否最终会启动识别器,这是我的目标。
答案 0 :(得分:1)
如果顶视图只是一个视图,那么可能根本不更容易添加手势识别器。您可以将手势识别器附加到其后面的视图中。手势识别器会自动操作视图层次结构,因此附加到后面视图的手势识别器将响应顶视图上的长按。
如果顶视图属于自定义包含的视图控制器,并且其后面的视图属于父视图控制器,则包含的视图控制器将父视图控制器的引用作为其parentViewController
。因此,顶视图中的手势识别器处理程序可以向parentViewController
发送消息,然后可以在其自己的手势识别器处理程序中执行任何操作。