在 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];
touchesMoved
、touchesEnded
和 touchesCancelled
也是如此
好的,我试试;)谢谢!以上是关于在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer的主要内容,如果未能解决你的问题,请参考以下文章
在 UIImage 中转换 UIScrollView 的内容
UIScrollView 和 UIImage 在其中启用了分页
将 UIImage 定位在 UIScrollView 的中心进行缩放
如何在uiscrollview中双击缩放和两个手指缩放uiimage