我想为单个图像视图实现多次触摸事件。例如,我有一张印度地图的图像,在这里我应该能够捕获不同州的触摸事件。有人可以给我一些实现目标c的想法吗?
答案 0 :(得分:6)
嗯,一个很有趣的问题。该解决方案可以通过多种方式实现。
解决方案1:
获取状态不同的彩色图像。然后,您可以获得触摸时的颜色并将其与状态颜色进行比较。
因此,如果某点的颜色是RGB基256,则颜色为(240,125,131),则状态为马哈拉施特拉邦。
在这张图片的上方,注意某些状态具有相同的颜色,因此该精确图像将不起作用。
要获得像素的颜色,可以参考this link。
解决方案2 :(用Swift编码,但是可以与经Obj-C链接测试的Objective C完美配合使用)
链接到project。
参考文献:
希望这会有所帮助。
结果:
答案 1 :(得分:1)
是的,我在我的一个应用程序中做到了。您需要保留状态的路径,然后点击以查找该点所在的路径。 在我的情况下,我必须用一组矩形划分图像,然后我只记下第一个&列表点(CGPoint)并保存矩形的高度宽度。然后根据这些数据,我比较了该点是否位于哪个区域。
如何对状态区域进行罚款?
您需要手动点击区域边界并通过以下默认方式获取CGPoint:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let point = touches.first?.location(in: self)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
let point = touches.first?.location(in: self)
touches.forEach { (touch) in
print(touch.location(in: self))
}
}