在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer

Posted

技术标签:

【中文标题】在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer【英文标题】:Enable GestureRegnizer on UIImageView inside UIScrollView 【发布时间】:2014-01-29 11:11:20 【问题描述】:

我有一个UIScrollView,里面有一些UIImageView。用户可以从他的库中添加一些图片,也可以直接用他的相机添加一些图片,并且选择的图片显示在UIScrollView中。

我希望用户可以删除UIImageView(由标记标识,其中标记=我数组中图像的索引),但我无法验证哪个UIImageView 被点击了!只有UIScrollView...

有人知道我该怎么做?

编辑 1:

如果我使用这个,我可以检查 UIScrollView 上的点击

UITapGestureRecognizer *singlTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(testGesture:)];
            singlTap.cancelsTouchesInView = NO;
            [self.imagesScrollview addGestureRecognizer:singlTap];

【问题讨论】:

显示你正在使用的代码 好的,我已经编辑了我的帖子;) 你是如何在滚动视图中添加图像视图的,你的滚动视图的名称是什么,你使用什么名称在滚动视图中添加图像视图 【参考方案1】:

使用您当前的代码,您需要遍历滚动视图的子视图并“点击测试”每个子视图以查看哪个点击结束了。

或者,为每个图像视图添加一个点击手势(而不是在滚动视图中添加一个)。然后,当点击被识别时,您将可以通过gesture.view 直接访问图像视图。

【讨论】:

【参考方案2】:

当然,只需为每个 imageView 设置标签,然后在处理程序中

- (void)testGesture:(UITapGestureRecognizer *)recognizer 

    UIImageView *img = (UIImageView *)recognizer.view;

    NSLog(@"%i", img.tag);


【讨论】:

【参考方案3】:

当您将 UITapGestureRecognizer 添加到滚动条时,您应该将其添加到 imageView 而不是滚动条:

UITapGestureRecognizer *singlTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(testGesture:)];
            singlTap.cancelsTouchesInView = NO;
            [self.imageToAdd addGestureRecognizer:singlTap];

- (void) testGesture:(UIGestureRecognizer*) sender

    int tag = sender.view.tag;
    // do your process here.

【讨论】:

是的,但是当我这样做时,我无法获取事件...我不知道为什么!就像 UIScollView 上的子视图不可触摸 在这种情况下,您需要继承 UIScrollView 并覆盖 touchesBegan。您应该致电:[self.nextResponder touchesBegan:touches withEvent:event]; touchesMovedtouchesEndedtouchesCancelled 也是如此 好的,我试试;)谢谢!

以上是关于在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer的主要内容,如果未能解决你的问题,请参考以下文章

在 UIImage 中转换 UIScrollView 的内容

UIScrollView 和 UIImage 在其中启用了分页

将 UIImage 定位在 UIScrollView 的中心进行缩放

如何在uiscrollview中双击缩放和两个手指缩放uiimage

如何在 UIScrollView 内使用 Autolayout 将 UIImage 视图缩放为正方形

如何在不破坏滚动功能的情况下将 UIImage 添加到 UIScrollView?