【问题标题】:Detect touch coordinates on a sinle UIImageview检测单一 UIImageview 上的触摸坐标
【发布时间】:2012-03-20 16:24:34
【问题描述】:

我有一个单独的图像视图,其中包含一个静态国家地图,该地图分为该国家的各个地区。我想做的是检测图像上的触摸位置并提供有关相应区域的内容。由于区域边界不是线性的,如何保存每个区域的区域?我是否需要多个图像视图(甚至是带有这些图像的自定义 UIButtons),每个图像视图都属于一个区域,还是我想要的方式?

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

谢谢

【问题讨论】:

    标签: ios cocoa-touch uitouch


    【解决方案1】:

    一种简单而准确的方法是使用 Ole Begemann 的 OBShapedButtons - 每个州一个。

    这将允许您准确检测选择了哪个状态。只需将每个状态的图像放在单独的按钮中(具有透明的环境),然后将按钮彼此相邻对齐,以便状态边界相互对齐。

    按钮将检测按下的位置,如果在其透明区域上按下了一个按钮,则触摸将一直传递,直到正确的按钮得到它为止。

    【讨论】:

    • 太棒了!谢谢 rokjarc,不胜感激。
    • @ErenBeşel:不客气!真正的荣誉归于 Ole Begemann :)
    【解决方案2】:

    执行您想要的操作的最简单方法是将一些 UIButtons 放在 UIImageView 的顶部,使其类型自定义(因此它们是透明的)。一般用UIButtons填写各个国家的区域。如果您测试您的应用程序,您可能会注意到人们会触摸每个国家的中心,所以我不会担心获得 100% 的覆盖率。根据国家/地区的形状,一两个方形 UIButton 可能就足够了。

    如果您确实想走 100% 覆盖路线,您可以将每个国家/地区嵌入到单独的 UIImageView 子类中,当您在任何地方检测到触摸时,查看每个国家/地区的图像并查看触摸的点是否不透明。当你点击那个(一个不透明的像素)时,你就找到了这个国家。相关代码见此贴:How to get the color of a pixel in an UIView?

    【讨论】:

    • 谢谢 Ned,这基本上也是最简单的想法(你的第一段)。如果没有其他建议,我会接受你的回答。
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    相关资源
    最近更新 更多