【问题标题】:Tap gesture recognizer on image throws error when passing event传递事件时,点击图像上的手势识别器会引发错误
【发布时间】:2013-08-24 17:48:35
【问题描述】:

我在自定义单元格中有一个 UIImageView。我正在为点击 UIImageView 以加载另一个详细视图时创建自定义点击手势识别器。

点击手势设置如下:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:event:)];
tapRecognizer.cancelsTouchesInView = YES;
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.delegate = (id)self;
[cell.userImage addGestureRecognizer:tapRecognizer];
cell.userImage.userInteractionEnabled = YES;

我正在使用 imageTapped:event: 以便我可以检测用户正在点击的单元格并相应地加载数据。问题是我收到此错误:

如果我像这样摆脱事件,它可以完美运行,没有任何问题。

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];

我以前在另一个应用程序中使用过这种方法,但由于某种原因,我无法让它在出现此错误时正常工作。有谁认识这是什么?谢谢!

【问题讨论】:

    标签: ios events uitapgesturerecognizer


    【解决方案1】:

    你需要阅读UIGestureRecognizer上的文档...

    手势识别器有一个或多个相关的目标-动作对 用它。如果有多个目标-动作对,它们是离散的, 而不是累积的。识别手势导致调度 为每一对发送到目标的动作消息。那个行动 调用的方法必须符合以下签名之一:

    - (void)handleGesture;
    - (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer;
    

    使用这些签名之一可以防止崩溃,正如您已经观察到的那样。然后,您可以通过检查识别器的 view 属性来访问手势所涉及的图像视图,然后您将能够访问相应的 UITableView 单元格。

    【讨论】:

    • 非常感谢!我查看了文档,但我想我没有意识到这是解决方案,所以这是我的错。通过向 imageview 添加一个等于 indexpath.row 的标签然后使用gesture.view.tag,这可以完美地工作。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多