当前位置:  开发笔记 > 编程语言 > 正文

当触摸下半部分时,图层命中测试仅返回图层

如何解决《当触摸下半部分时,图层命中测试仅返回图层》经验,为你挑选了1个好方法。

我在图层支持的视图上有一个子图层.子图层的内容设置为图像参考,并且是25x25矩形.
当调用touchesBegan和touchesMoved方法时,我在超级层上执行命中测试.实际上,命中测试方法确实在触摸时返回子层,但仅在触摸图像的下半部分时才返回子层.如果触摸图像的上半部分,则返回超级图层.

我知道iPhone OS可以补偿用户触摸的趋势低于预期.即使我将子图层调整为更大的尺寸(50x50),它也表现出相同的行为.

有什么想法吗?



1> schwa..:

hitTest的文档说:

/* Returns the farthest descendant of the layer containing point 'p'.
 * Siblings are searched in top-to-bottom order. 'p' is in the
 * coordinate system of the receiver's superlayer. */

所以你需要做(像这样):

CGPoint thePoint = [touch locationInView:self];
thePoint = [self.layer convertPoint:thePoint toLayer:self.layer.superlayer];
CALayer *theLayer = [self.layer hitTest:thePoint];

(为完整起见,重复其他帖子的回答)

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有