7

我正在创建同一类的随机数量的自定义 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,该方法会被调用两次(不是我想要的行为)。有什么优雅的方法可以解决这个问题,或者有什么方法吗?

4

1 回答 1

1

从苹果文档:

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

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

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

于 2013-07-25T11:53:30.647 回答