无法在 childView 中禁用 UITapGesture

Posted

技术标签:

【中文标题】无法在 childView 中禁用 UITapGesture【英文标题】:Cannot disable UITapGesture in childView 【发布时间】:2015-11-06 19:20:22 【问题描述】:

我有一个 ContainerView 有两个子视图 ABA is a TableViewControllerB is a CollectionViewController。 在 B 中,当我 press on a collectionViewCell 加载了一个 detailView。 detailView 是一个简单的 UIViewControllerUIImageView。 我在 B 上设置了 UISwipeGesture 以在左侧显示 tableViewController A我需要什么 现在我不想在 detailView 上显示 tableViewController, 所以我需要禁用 UISwipegesture 但只有当我在 detailView

我做了什么 我已经设置了 UIGestureDelegate 但没有调用委托方法。 使用 userInteractionEnambled=NO 没有任何变化,除非我在 detailView 中插入以下行 myContainerViewController.view.userInteractionEnambled=NO;

提前致谢

【问题讨论】:

你能发布一些你的代码并重新格式化你的问题吗? 为手势识别器设置代理是处理此问题的适当方法。您需要在您的委托中实现 gestureRecognizer:shouldReceiveTouch: 我已经尝试过了,但我无法调用该方法。我放了 myGetsure.delegate=self 和 但什么也没发生 【参考方案1】:

您可以在属性中保存滑动手势的引用,并在显示细节控制器时禁用它,如下所示:

self.swipeGesture.enabled = NO;

然后您可以在主视图控制器的 viewWillAppear 方法中重新启用它,或者在您关闭详细视图时重新启用它。

【讨论】:

好的,请您再解释一下好吗?我已经尝试放入 myCollectionViewController prepareForSegue myGesture.enabled=NO 但没有任何改变 尝试删除手势识别器的委托。如果您禁用它,手势不应触发,但如果它正在触发,请尝试检查属性是否已正确初始化。 你说得对!如果我把 NSLog(@"%@", self.tapGestureRecognizer.enabled );我在控制台中获得了 null 值,我该怎么办?我还是不知道该怎么办 您的手势是通过代码还是通过 Interface Builder 初始化的? 我终于解决了,原来这不是UIGesture,而是在scrollview方法中实现了滑动效果。

以上是关于无法在 childView 中禁用 UITapGesture的主要内容,如果未能解决你的问题,请参考以下文章

在 uiimageview 上无法识别点击手势

ScrollView -> ChildView 没有调整到约束

ExpandableListView的ChildView中的CheckBox

Childview宽度锚在stackView中不起作用

SwiftUI ChildView 未在状态更改时重新计算

Android:放置在父视图外部时,缩放EditText Android中的问题以及childView的get Touch事件