我想在UITableViewCell上长按一下,打印一个"快速访问菜单". 是不是已经有人这么做了?

尤其是UITableView的手势?

推荐答案

首先,将长按手势识别器添加到表视图中:

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
  initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 2.0; //seconds
lpgr.delegate = self;
[self.myTableView addGestureRecognizer:lpgr];
[lpgr release];

然后在手势处理程序中:

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
    CGPoint p = [gestureRecognizer locationInView:self.myTableView];

    NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:p];
    if (indexPath == nil) {
        NSLog(@"long press on table view but not on a row");
    } else if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        NSLog(@"long press on table view at row %ld", indexPath.row);
    } else {
        NSLog(@"gestureRecognizer.state = %ld", gestureRecognizer.state);
    }
}

您必须小心这一点,这样才不会干扰用户正常点击单元格,还要注意handleLongPress可能会触发多次(这将是由于手势识别器状态更改所致).

Ios相关问答推荐

崩溃到初始化react -带网页的原生iOS应用程序

Flutter应用程序无法使用IOS/Swift的蓝牙核心库发现某些外围设备

Flutter WebRTC:GetUserMedia()不适用于Safari和IOS设备

带有动画层的UIView表示不会在工作表中设置动画

不使用iOS 17修改器修改SWIFT用户界面视图

如何在SwiftUI中基于嵌套视图中的状态动态显示外部视图的内容?

将 URLCache 子类与 URLSession 一起使用

小部件链接有效,但不执行任何操作

我可以在 Apple-Watch 上使用 iPhone 的摄像头扫描 SwiftUi 中的二维码(例如用于登录)吗

如何将单个按钮传递到自定义 ConfirmationDialog

在向我的 struct 添加属性后获取线程 10:EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

如何告诉 SwiftUI 视图绑定到嵌套的 ObservableObjects

无法同时满足约束 - 没有适当的约束

由于 NSInvalidUnarchiveOperationException 导致 iOS11 WKWebview 崩溃

try 在 iOS 中处理后退导航按钮操作

我可以通过 UIAppearance 代理设置哪些属性?

AVAudioRecorder 抛出错误

闭包不能隐式捕获变异的 self 参数

Swift:如何在设备旋转后刷新 UICollectionView 布局

如何在 iphone 屏幕中间显示活动指示器?