UITableViewCell 上的 UILongPressGestureRecognizer 在 iOS 5 和 4.3 中不起作用
Posted
技术标签:
【中文标题】UITableViewCell 上的 UILongPressGestureRecognizer 在 iOS 5 和 4.3 中不起作用【英文标题】:UILongPressGestureRecognizer on UITableViewCell does not work in iOS 5 and 4.3 【发布时间】:2012-08-15 16:57:39 【问题描述】:我有一个表格视图,我在表格视图单元格上使用 UILongPressGestureRecognizer 在单元格上显示上下文菜单,以允许用户执行一些额外的功能。在 ios 5.1 中一切正常,但是当我在 iOS 5 和 4.3 中测试时,没有触发该事件。
有谁知道如何解决这个问题,请帮助我,在此先感谢。
下面是我的代码:
在tableViewCell.h中:添加UIGestureRecognizerDelegate
在tableViewCell.m中
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
longPressRecognizer.minimumPressDuration = 1.5;
longPressRecognizer.numberOfTouchesRequired = 1;
longPressRecognizer.numberOfTapsRequired = 0;
longPressRecognizer.delegate = self;
[self addGestureRecognizer:longPressRecognizer];
[longPressRecognizer release];
// 事件处理方法
- (void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
if (gestureRecognizer.state == UIGestureRecognizerStateBegan)
// Do something.
【问题讨论】:
能否展示事件处理方法和添加识别器的代码? 嗨安娜,我在我的问题中添加了代码。 看起来不错。在 5/4.3 上运行时,确保实际调用了添加识别器的代码。问题可能出在代码的其他部分。 在这个问题上花了 1.5 天后,我终于找到了解决这个问题的解决方案,方法是将 UILongPressGuestureRecognizer 添加到 tableView 而不是在每个单元格中。 您应该将其发布为答案。 【参考方案1】:在这个问题上花了 1.5 天后,我发现 tableView 以某种方式收到长按事件但 tableViewCell 在 iOS 5/4.3 上没有。所以我通过将 UILongPressGuestureRecognizer 添加到 tableView 然后在长按事件处理程序中然后调用 tableViewCell 来显示上下文菜单来解决这个问题,它可以工作。
【讨论】:
【参考方案2】:我也遇到了这个问题。我发现只有当'delegate'属性为'NULL'时,长按手势识别器才能正常工作。因此,请尝试删除此行。
longPressRecognizer.delegate = self;
【讨论】:
这应该是正确的答案,在 iOS5 中对我来说非常出色。以上是关于UITableViewCell 上的 UILongPressGestureRecognizer 在 iOS 5 和 4.3 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何使 UITableViewCell 上的 UIProgressView 立即更改?
UITableViewCell 内的 UIView 上的 UIGestureRecognizer