提问人:Arun Kumar Munusamy 提问时间:8/3/2018 最后编辑:Arun Kumar Munusamy 更新时间:8/4/2018 访问量:424
单个图像视图中的多个触摸事件
Multiple touch event in single image view
问:
我想为单个图像视图实现多个触摸事件。例如,我有一张印度地图的图像,我应该能够捕捉到不同州的触摸事件。有人可以为我提供一些在目标 c 中实现这一点的想法吗?
答:
1赞
Naresh
8/3/2018
#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))
}
}
6赞
Md. Ibrahim Hassan
8/4/2018
#2
嗯,这是一个非常有趣的问题。该解决方案可以通过多种方式实现。
解决方案 1 :
获取具有不同不同颜色状态的图像。然后,您可以在触摸点获取颜色,并将其与状态的颜色进行比较。
因此,如果某一点的颜色是RGB,则以RGB为基数256为(240,125,131),则该州为马哈拉施特拉邦。
请注意,在上面的这张图片中,某些州具有相同的颜色,因此此确切的图像将不起作用。
要获取像素的颜色,您可以参考此链接。
解决方案 2:(用 Swift 编码,但可以与使用 Obj-C 链接测试的 Objective C 完美配合)
- 获取各个状态的所有图像。
- 在 IB 中使视图成为 StateView 的子类
- 在IB中设置状态的图像和名称
- 如果触摸在状态内,它会打印状态名称,直到现在用于演示目的。
链接到项目。
引用:
希望这会有所帮助。
结果:
评论