UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图

Posted

技术标签:

【中文标题】UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图【英文标题】:UIGesture is not fireing + removing subview from parent which is not superview 【发布时间】:2015-05-07 22:51:39 【问题描述】:

我的屏幕中有以下层次结构 ViewController(红色和蓝色下面的绿色)具有两个“覆盖” UIviewController 视图区域的子视图

蓝色视图是谷歌地图(GMSMapView)

我有另一个 UIView(黑色),它附加了一个 Tapgesture,点击它会从它的超级视图中删除自己。

如果我将黑色作为子视图添加到我的 viewcontrollerview(将黑色添加到绿色),那么一切正常

但如果我在地图上添加黑色(蓝色),则不会调用 Tapgesture

关于为什么会这样的任何想法?

注意:地图手势完美运行。

【问题讨论】:

也许 GMSMapView 捕获了手势并阻止它向下移动?您可以只调整视图的大小并将其放置在其顶部。 @Toby nop 我有一个用于地图的 didTap 方法,它们也不会被触发 您不知道 Google 地图的视图是如何编码的,所以可能会发生一些可能并不完全明显的奇怪交互?一种解决方法是将谷歌地图放在另一个容器视图中,然后在其中添加黑色视图。 【参考方案1】:

由于未触发 mapView 手势,我假设未为子视图启用 userInteractions。 对于每个 subView,您需要这样做:self.subviewOfInterest.userInteractionEnabled = YES;. 默认情况下设置为 NO。

This答案有更多解释。

【讨论】:

mapView 手势被触发。 上述评论另有说明。但是,您是否检查过 userInteractions 是否支持子视图?

以上是关于UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何从不是父或子的另一个组件更改功能组件的状态?

Swift 3 - 带有 Tap Gesture 的图像视图

SwiftUI手势(Gesture)进阶 : 实现任意视图的长按惯性加速行为

SwiftUI手势(Gesture)进阶 : 实现任意视图的长按惯性加速行为

SwiftUI手势(Gesture)进阶 : 实现任意视图的长按惯性加速行为

C# WinForms DragEnter 从不触发