无法在 childView 中禁用 UITapGesture
Posted
技术标签:
【中文标题】无法在 childView 中禁用 UITapGesture【英文标题】:Cannot disable UITapGesture in childView 【发布时间】:2015-11-06 19:20:22 【问题描述】:我有一个 ContainerView 有两个子视图 A
和 B
,A is a TableViewController
和 B is a CollectionViewController
。
在 B 中,当我 press on a collectionViewCell
加载了一个 detailView。 detailView 是一个简单的 UIViewController
和 UIImageView
。
我在 B 上设置了 UISwipeGesture 以在左侧显示 tableViewController A
。 我需要什么
现在我不想在 detailView 上显示 tableViewController,
所以我需要禁用 UISwipegesture 但只有当我在 detailView
我做了什么 我已经设置了 UIGestureDelegate 但没有调用委托方法。 使用 userInteractionEnambled=NO 没有任何变化,除非我在 detailView 中插入以下行 myContainerViewController.view.userInteractionEnambled=NO;
提前致谢
【问题讨论】:
你能发布一些你的代码并重新格式化你的问题吗? 为手势识别器设置代理是处理此问题的适当方法。您需要在您的委托中实现gestureRecognizer:shouldReceiveTouch:
。
我已经尝试过了,但我无法调用该方法。我放了 myGetsure.delegate=self 和 您可以在属性中保存滑动手势的引用,并在显示细节控制器时禁用它,如下所示:
self.swipeGesture.enabled = NO;
然后您可以在主视图控制器的 viewWillAppear 方法中重新启用它,或者在您关闭详细视图时重新启用它。
【讨论】:
好的,请您再解释一下好吗?我已经尝试放入 myCollectionViewController prepareForSegue myGesture.enabled=NO 但没有任何改变 尝试删除手势识别器的委托。如果您禁用它,手势不应触发,但如果它正在触发,请尝试检查属性是否已正确初始化。 你说得对!如果我把 NSLog(@"%@", self.tapGestureRecognizer.enabled );我在控制台中获得了 null 值,我该怎么办?我还是不知道该怎么办 您的手势是通过代码还是通过 Interface Builder 初始化的? 我终于解决了,原来这不是UIGesture,而是在scrollview方法中实现了滑动效果。以上是关于无法在 childView 中禁用 UITapGesture的主要内容,如果未能解决你的问题,请参考以下文章
ScrollView -> ChildView 没有调整到约束
ExpandableListView的ChildView中的CheckBox
Android:放置在父视图外部时,缩放EditText Android中的问题以及childView的get Touch事件