我有一个UIView
作为容器/持有人视图。在里面,我有一组UIView
s(图标)
认为这类似于iPhone的SpringBoard-你有一个SBIconList
(UIView
子类)和一组SBIcon
s(也是UIView
子类)
到目前为止,我的图标的每个图标都是可拖动的,但我在编写碰撞检测代码时遇到问题,以检测拖动图标和另一个图标之间的匹配。
到目前为止,我的基本设置是:我正在图标的touchesMoved
事件范围内编写命中测试代码。然后我'for'循环遍历容器视图的每个子视图(每个图标)并尝试CGRectContaninsPoint(currentSubviewFrame, touchPoint)
。
currentSubviewFrame
是'for'循环的当前循环中图标的框架。并且touchPoint
是屏幕上触摸点的x / y。
问题在于,因为代码是在其中一个容器子视图的范围内编写的,所以坐标似乎与子视图相关。
例如,touchPoint
(全局)的坐标应该是160,240
(中心屏幕),但此坐标为NSLog
,例如30,30
。 (相对于60x60图标的中央)
currentSubviewFrame
x
,y
,width
& height
。
我应该提一下,这段代码有是在子视图touchesMoved
事件的范围内编写的。
任何帮助将不胜感激。 在此先感谢:)
答案 0 :(得分:1)
查看用于转换视图之间坐标的论文函数:
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
您可以在所有子视图上使用-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
(您正在拖动的子视图除外),以查明是否发生了碰撞。