在Subviews上对组进行测试

时间:2010-10-17 09:44:46

标签: iphone ios objective-c uiview

我有一个UIView作为容器/持有人视图。在里面,我有一组UIView s(图标)

认为这类似于iPhone的SpringBoard-你有一个SBIconListUIView子类)和一组SBIcon s(也是UIView子类)

到目前为止,我的图标的每个图标都是可拖动的,但我在编写碰撞检测代码时遇到问题,以检测拖动图标和另一个图标之间的匹配。

到目前为止,我的基本设置是:我正在图标的touchesMoved事件范围内编写命中测试代码。然后我'for'循环遍历容器视图的每个子视图(每个图标)并尝试CGRectContaninsPoint(currentSubviewFrame, touchPoint)currentSubviewFrame是'for'循环的当前循环中图标的框架。并且touchPoint是屏幕上触摸点的x / y。

问题在于,因为代码是在其中一个容器子视图的范围内编写的,所以坐标似乎与子视图相关。 例如,touchPoint(全局)的坐标应该是160,240(中心屏幕),但此坐标为NSLog,例如30,30。 (相对于60x60图标的中央) currentSubviewFrame xywidth& height

我应该提一下,这段代码是在子视图touchesMoved事件的范围内编写的。

任何帮助将不胜感激。 在此先感谢:)

1 个答案:

答案 0 :(得分:1)

查看用于转换视图之间坐标的论文函数:

- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view

您可以在所有子视图上使用-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event(您正在拖动的子视图除外),以查明是否发生了碰撞。