【问题标题】:Set exclusive touch on multiple UIViews of the same class对同一类的多个 UIView 设置独占触摸
【发布时间】:2013-07-25 11:45:12
【问题描述】:

我正在创建随机数量的同一类的自定义 UIView,并将它们添加到 UIViewController 的视图中。我正在为他们分配一个 UITapGestureRecognizer,但我似乎无法使独家触摸工作:

for (int i = 0; i <= n; i++) {
   ICCatalogProductView *catalogProductView;
   catalogProductView = [[ICCatalogProductView alloc] init];
   [self.view addSubview:catalogProductView]
   UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(testTouch)];
   [catalogProductView addGestureRecognizer:tapGesture];
   [catalogProductView setExclusiveTouch:YES];
}

如果我同时点击 UIViews,该方法会被调用两次(不是我想要的行为)。有什么优雅的方法可以解决这个问题,或者有什么方法吗?

【问题讨论】:

  • 同时选项卡上实际需要的内容。请说明。
  • 我只希望有一个触摸是可能的,当有 2 个 UIButtons 和 .exclusiveTouch = YES 时,你会有同样的行为

标签: ios uiview touch


【解决方案1】:

来自 Apple 文档:

exclusiveTouch 仅在 在独家触摸视图中有一个主动触摸。也就是说,如果 您在独家触摸视图中按下手指触摸不会开始 在其他视图中,直到您抬起第一根手指。它不会阻止 如果当前没有触摸,则从其他视图开始触摸 在 ExclusiveTouch 视图中。

真正让这个视图成为屏幕上唯一可以接收的东西 触摸您需要在所有内容之上添加另一个视图 否则捕捉其余的触摸,或在某处子类化视图 您的层次结构(或您的 UIWindow 本身)并覆盖 hitTest:withEvent: 总是在可见时返回你的文本视图, 或为不在您的文本视图中的触摸返回 nil。

意味着它在你的一个视图中唯一设置,而不是在你触摸视图之外的东西时。

【讨论】:

  • 我正在触摸的两个 UIView 的 ExclusiveTouch 设置为 YES,但同时触摸是可能的。
  • 基本上,触摸 ActivityView 以外的任何视图都会使 ActivityView 消失,您需要使用 ActivityView 来处理它。上帝禁止,但可能你必须创建两个单独的视图。假设它与第一响应者有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多