我已经将UITapGestureRecognizer
连接到包含我想要在iPad屏幕上显示的图像的UIImageView,并且能够正常使用用户点击。但是,我的图像是桌子上的一只手,我想知道用户是在手上还是在图像的桌面上轻敲了一下。我可以使用CGPoint tapLocation = [recognizer locationInView:self.view];
来获取用户点击的x,y坐标但是我不知道如何将CGPoint映射到包含手的图像区域与包含手的区域桌子。到目前为止,我所阅读的所有内容都涉及确定CGPoint是否位于特定的矩形区域,但如果您需要确定CGPoint是否位于更不规则形状的边界,该怎么办?这甚至可能吗?任何建议或只是指出我正确的方向将是一个很大的帮助。谢谢!
答案 0 :(得分:3)
您可以使用pointInside:withEvent:以编程方式定义命中区域。
详细说明一下,你只需要点一下,然后用一系列if语句来评估它是否属于你所追求的区域。如果是,则返回TRUE。如果没有,则返回FALSE。如果这与this post相关,那么您可以使用圆形条件来使用Pythagorean Theorem比较点与圆心的距离。
答案 1 :(得分:1)
1)定义你的闭合多边形。 - 听起来这可能是你的情况下的一些工作。
2)选择任何不等于原点的点。 (是的,任何一点)
3)对于多边形中的每个边, 确定原始点到秒点的光线是否与该多边形边相交。 - 这需要一个线段 - 交叉射线程序,也可以在“管道”上找到。
4)如果交叉点的数量是奇数,则它在多边形内。 如果计数是均匀的,那就在外面。
对于一般几何类型的问题, 我强烈推荐Paul Bourke:http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/
答案 2 :(得分:0)
您可以使用覆盖手的大部分或全部的边界矩形。
如果用户用手指敲击手或桌子,我怀疑你是否希望他或她对水龙头非常精确。
答案 3 :(得分:0)
边界矩形答案的扩展,
OR
答案 4 :(得分:0)