objective-c - 在表格 View 单元格上长按手势

标签 objective-c ios uitableview uigesturerecognizer

我想要在表格 View 单元格上进行两种交互:正常点击和长按。我使用以下答案来帮助我开始:

Long press on UITableView

问题是,如果我长按一个有效的单元格,该单元格将突出显示为蓝色,并且长按手势不会触发(它认为它只是一个简单的点击)。但是,如果我在一个无效的单元格上开始长按手势,然后将我的手指滑到一个有效的单元格上然后松开,它就可以正常工作。

最佳答案

可能有更好的答案,但这里有一种方法:

首先在表格 View 本身上创建一个长按手势识别器。

UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPress:)];
[self.tableView addGestureRecognizer:longPressRecognizer];

然后,用一个可以找到所选行的例程来处理它:

-(void)onLongPress:(UILongPressGestureRecognizer*)pGesture
{
if (pGesture.state == UIGestureRecognizerStateRecognized)
{
    //Do something to tell the user!
}
if (pGesture.state == UIGestureRecognizerStateEnded)
{
    UITableView* tableView = (UITableView*)self.view;
    CGPoint touchPoint = [pGesture locationInView:self.view];
    NSIndexPath* row = [tableView indexPathForRowAtPoint:touchPoint];
    if (row != nil) {
        //Handle the long press on row
    }
}
}

我还没有尝试过,但我认为您可以通过让表格 View 上的手势识别器等待长按失败来阻止该行显示选择。

关于objective-c - 在表格 View 单元格上长按手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367898/

相关文章:

iphone - MPMoviePlayerController 代码在 iPhone(运行 4.3)上播放视频,但不能在 iPodTouch(运行 4.2)上播放视频

ios - UITableViewCell 的详细文本被截断/超出设备宽度

objective-c - 为 Mac 创建一个可定制的 GUI 有多难?

ios - UIView切换过渡?

ios - 在 iOS 图表中使用自定义颜色 labelTextColor

ios - 启动图像大小不正确

ios - 修复了 tableView 上的背景图像(iOS、Xcode)

ios - IOS 的表单容器组件

ios - 如何解决 uitableviewcell 重用的自定义子类的问题?

ios - 搜索栏故障