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

我有一个 ContainerView 有两个子视图 AB
A 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 和 但什么也没发生

标签: ios xcode uitableview uiviewcontroller uigesturerecognizer


【解决方案1】:

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

self.swipeGesture.enabled = NO;

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

【讨论】:

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