我有一个长按手势识别器的视图。
在我的应用中,我必须临时在其上放置另一个视图,但是基础视图所在的区域是透明的,因此用户仍然可以看到其下方的视图。
我在新的顶视图中添加了一个UILongPressGestureRecognizer。当用户长按他们可以看到的视图(位于顶视图下方)时,我会在顶视图中识别出它。我将其取消(使用g.enabled = NO;
),然后关闭顶视图。
现在,我想让用户长按该按钮以使其手势识别器启动。有没有办法做到这一点?
更新:
根据@matt在评论中的建议,我从顶视图中删除了手势识别器-这使我有了更多的洞察力和控制力-但我还没有到达那儿。
我已经尝试过使用hitTest:withEvent:
忽略透明区域中的事件,但是到目前为止,我还没有做到这一点(事件在基础视图中启动了一个手势)。
现在,我正在尝试通过让我的顶视图将它们直接发送到其视图控制器来查看是否会从那里进一步传播的方法来重新路由touchesBegan:withEvent:
,但是我还没有使它起作用。
我仍在调试以确定是否将触摸发送到底部视图-我不确定这是否最终会启动识别器,这是我的目标。
最佳答案
如果顶视图只是一个视图,那么根本不添加手势识别器可能会更容易。您可以将手势识别器留在视图后面。手势识别器会自动操作视图层次结构,因此连接到后面视图的手势识别器将响应顶视图上的长按。
如果顶视图属于自定义包含视图控制器,而其后的视图属于父视图控制器,则包含视图控制器会将对父视图控制器的引用作为其parentViewController
。因此,您在顶视图中的手势识别器处理程序可以向parentViewController
发送一条消息,该消息随后可以执行在其自己的手势识别器处理程序中所做的任何事情。
关于ios - 我可以取消UILongPressGestureRecognizer,关闭 View 并长按以识别下面的 View 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28204212/