撤销[UIGestureRecognizer* requireGestureRecognizerToFail]

8

有没有一种方法可以撤消requireGestureRecognizerToFail的设置。

我使用requireGestureRecognizerToFail设置了两个UIGestureRecognizers之间的依赖关系,如下所示。

UITapGestureRecognizer* tgr1 = [UITapGestureRecognizer alloc] initWithTarget ...];
UITapGestureRecognizer* tgr2 = [UITapGestureRecognizer alloc] initWithTarget ...];
[tgr1 requireGestureRecognizerToFail: tgr2];
... 
// later in the code
[tgr2 release];

我该如何用 tgr1 注销 tgr2? tgr2 是否已被释放,或者现在 tgr1 仍然有一个引用? 如果没有,释放 tgr2 会导致问题吗?
谢谢。
1个回答

3

您的问题:

如何取消tgr1对tgr2的注册?

您有许多选择。

  1. 您可以从视图中删除它。
  2. 您可以禁用tgr2。
  3. 要保持两个手势识别器,您需要创建一个新的手势识别器,使其失败并添加它。我不知道如何仅删除它们之间的依赖关系,也不知道是否存在这样的方法。

tgr2实际上是否被释放了,还是tgr1现在有引用?

当您使用tgr1的requireGestureRecognizerToFail和tgr2一起时,tgr2的保留计数不会增加。

如果没有,释放tgr2会导致问题吗?

不会,这只会导致tgr2始终失败,并调用tgr1。


嘿,你有这些声明的来源吗?它在实践中似乎有效,但是苹果或苹果员工是否曾经说过这种行为是合同制的? - Andrey Tarantsov
@AndreyTarantsov 我不记得了,但我曾经大量使用手势,可能其中一些不是来自文档而是我进行的测试。 - ggrana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接