首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定在iOS中点击的是哪个视图?

如何确定在iOS中点击的是哪个视图?
EN

Stack Overflow用户
提问于 2012-05-18 02:43:52
回答 2查看 2.9K关注 0票数 0

在我的手势识别器处理程序中,我需要知道识别器连接到/响应到屏幕上的哪一项。例如,如果用户点击了一张图片,我的处理程序如何知道点击的是哪张图片?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-18 03:43:53

在创建手势识别器时,总是将其与视图绑定在一起。当检测到手势并调用与创建的手势绑定的选择器时,您可以使用gesture.View找出与该手势相关联的视图。

以下是示例代码

代码语言:javascript
运行
复制
UIImageView *imageView = self.someImageView;
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageSingleTapped:)];
[imageView addGestureRecognizer:singleTapGesture];

[singleTapGesture release]; 


- (void) imageSingleTapped:(UIGestureRecognizer*)recognizer
{
     UIView *viewTiedWithRecognizer = recognizer.view; // This is the view associated with gesture recognizer.
}
票数 9
EN

Stack Overflow用户

发布于 2012-05-18 02:53:02

我对此也有问题。我不知道我是否得到了正确的解决方案,但以下是我所做的。

代码语言:javascript
运行
复制
CGPoint point = [gestureRecognizer locationInView:self];
CGPoint offset = self.scrollView.contentOffset;
CGPoint contentPoint = CGPointMake(point.x + offset.x, point.y + offset.y);

for (UIView *view in self.scrollView.subviews)
    if (CGRectContainsPoint(view.frame, contentPoint))
        return view;

return nil;

也被称为蛮力。

现在我看了一下,我发现了一个bug。如果用户直接触摸滚动条,则滚动条可能是返回的视图。我从来没有发生过这种情况(至少据我所知),但我仍然应该对此进行测试,并编写解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10641669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档