获取触摸位置滚动视图

Posted

技术标签:

【中文标题】获取触摸位置滚动视图【英文标题】:get touch location scrollView 【发布时间】:2012-06-15 15:32:11 【问题描述】:

我需要获取触摸位置,并且我创建了一个获取它的方法.. 但是当我在 ScrollView 中触摸时,该方法不返回位置,只返回 scrollView。

这是代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint pos = [touch locationInView:nil];
    NSLog(@"Position of touch: %.0f, %.0f", pos.x, pos.y);

有人知道怎么做吗? 谢谢!

【问题讨论】:

你能描述一下这个方法属于什么对象吗?它是您添加到滚动视图(或滚动视图的超级视图)的自定义手势识别器吗?还是自定义滚动视图? is a custom scrollview, where will have same images.. when the use touch the image, I wanna know the touchs 位置。 【参考方案1】:
CGPoint pos = [touch locationInView:nil];

您正在检索相对于窗口原点的触摸坐标。根据documentation:

查看

您希望触摸的视图对象在其坐标系中 位于。处理触摸的自定义视图可以将 self 指定为 在自己的坐标系中获取触摸位置。 通过nil获取 窗口坐标中的触摸位置。

要获取滚动视图中的坐标,您需要传递self

CGPoint pos = [touch locationInView:self];

【讨论】:

以上是关于获取触摸位置滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

TapgestureRecognizer 将触摸检测为滚动视图

UIScrollView 问题

(iphone) uiscrollview 触摸。取消内容触摸并开始滚动

scrollView 上的触摸功能

在作为子视图添加的滚动视图中将触摸事件传递给 uiimageview

在 ios 的滚动视图内检测按钮的触摸