检测sinle UIImageview上的触摸坐标

时间:2012-03-20 16:24:34

标签: ios cocoa-touch uitouch

我有一个带有静态国家地图的imageview,该地图分为该国家/地区。我想做的是检测图像上的触摸位置并提供有关相应区域的内容。由于区域边界不是线性的,我如何保存每个区域的区域?我是否需要多个图像视图(甚至是带有这些图像的自定义UIButton),每个图像视图都属于一个区域,或者我可能喜欢这样的方式吗?

这是我想到的第一件事,所以也许有一种更简单,更好的方式,我很乐意听到,如果有重复,我不知道如何搜索这样的道歉。当然,我很感激你的帮助。

由于

2 个答案:

答案 0 :(得分:2)

一个简单的&确切的方法是使用Ole Begemann的OBShapedButtons - 每个州一个。

这将允许您准确检测选择的状态。只需将每个州的图像放在单独的按钮(透明的环境)中,然后将按钮对齐,使状态边框彼此对齐。

按钮将检测印刷机的位置,如果在其透明区域按下一个按钮,则触摸将被传递,直到正确的按钮获得它。

答案 1 :(得分:1)

做一些像你想要的东西最简单的方法就是把一些UIButton放在UIImageView的顶部,使它们的类型自定义(因此它们是透明的)。通常用UIButton填写每个国家的区域。如果你测试你的应用程序,你可能会注意到人们将触及每个国家的中心,所以我不担心获得100%的覆盖率。根据国家的形状,一个或两个方形的UIButton可能就足够了。

如果您确实想要使用100%覆盖率路线,则可以将每个国家/地区嵌入到单独的UIImageView子类中,当您在任何地方检测到触摸时,请浏览每个国家/地区图像并查看触摸的点是否不透明。当您点击(非透明像素)时,您已找到该国家/地区。有关相关代码,请参阅此帖子:How to get the color of a pixel in an UIView?