【发布时间】:2015-12-19 19:25:46
【问题描述】:
我们的项目有一个自定义 UICollectionViewCell,它使用 UITapGestureRecognizer 处理单击和双击,以及一个也使用单击 UITapGestureRecognizer 的子视图。
这是我们项目中单击/双击设置的方式:
_singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
_singleTapGestureRecognizer.numberOfTapsRequired = 1;
[self addGestureRecognizer:_singleTapGestureRecognizer];
_doubleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
_doubleTapGestureRecognizer.numberOfTapsRequired = 2;
[self addGestureRecognizer:_doubleTapGestureRecognizer]
[_singleTapGestureRecognizer requireGestureRecognizerToFail:_doubleTapGestureRecognizer];
在我们的代码中,我们还通过执行这些操作来取消单击/双击,
self.singleTapGestureRecognizer.enabled = NO;
self.doubleTapGestureRecognizer.enabled = NO;
self.doubleTapGestureRecognizer.enabled = YES;
self.singleTapGestureRecognizer.enabled = YES;
这些曾经在 iOS9 之前的设备上运行良好,但是最近,我发现在 iOS9 设备上,双击永远不会触发。每次我尝试双击单元格时,它都会立即记录单击,几乎没有延迟。
当我试图查看它时,我发现在注册singleTapGestureRecognizer时,doubleTapGestureRecognizer仍然处于状态Possible not Failed。
single tap: <UITapGestureRecognizer: 0x7f94ead42220; state = Ended; view = <UIView 0x7f94ead3f710>; target= <(action=handleSingleTap:, target=<PVEntityStreamCellForSetOnboarding 0x7f94ead3f1e0>)>; must-fail = {
<UITapGestureRecognizer: 0x7f94ead42810; state = Possible; view = <UIView 0x7f94ead3f710>; target= <(action=handleDoubleTap:, target=<PVEntityStreamCellForSetOnboarding 0x7f94ead3f1e0>)>; numberOfTapsRequired = 2>
}>
我还发现,如果我先点击包含另一个 UITapGestureRecognizer 的子视图,然后双击将起作用,一旦我滚动集合视图,就不可能对任何单元格进行双击。
有没有人有类似的问题或知道如何解决这个问题?
【问题讨论】:
标签: ios objective-c iphone uicollectionview ios9