在同一类的多个UIView上设置独家触摸

Dur*_*adu 6 touch uiview ios

我正在创建一个随机数量的同一个类的自定义UIViews,我将它们添加到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];
}
Run Code Online (Sandbox Code Playgroud)

如果我同时点击UIViews,该方法被调用两次(不是我想要的行为).有没有任何优雅的方法来解决这个问题,或者任何方法呢?

小智 1

来自苹果文档:

ExclusiveTouch 仅在独占触摸视图中存在活动触摸时阻止其他视图中的触摸。也就是说,如果您将手指放在独占触摸视图中,则在抬起第一根手指之前,触摸不会在其他视图中开始。如果 ExclusiveTouch 视图中当前没有触摸,则它不会阻止在其他视图中启动触摸。

要真正使此视图成为屏幕上唯一可以接收触摸的内容,您需要在其他所有内容之上添加另一个视图以捕获其余的触摸,或者在层次结构中的某个位置(或您的 UIWindow 本身)对视图进行子类化并覆盖 hitTest:withEvent: 以便在文本视图可见时始终返回文本视图,或者对于不在文本视图中的触摸返回 nil。

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