在同一类的多个UIViews上设置独占触摸



我正在创建同一类的随机数个自定义UIViews,并将它们添加到UIViewController的视图中。我给他们分配了一个UIMapGestureRecognizer,但我似乎无法实现独家触摸:

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,该方法会被调用两次(不是我想要的行为)。有没有什么优雅的方法来解决这个问题,或者有什么方法?

来自Apple文档:

exclusiveTouch仅在在独占触摸视图中存在活动触摸。也就是说,如果你把手指放在专属触摸视图中,触摸不会开始在其他视图中,直到抬起第一根手指。它不会阻止如果当前没有触摸,则从其他视图开始触摸在exclusiveTouch视图中。

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

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

最新更新