我正在创建一个随机数量的同一个类的自定义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。
意味着它在您的一个视图中是唯一的设置,而不是当您触摸视图之外的东西时。
| 归档时间: |
|
| 查看次数: |
7005 次 |
| 最近记录: |