2012-10-15 73 views
0

我使用UIPanGestureRecognizer来移动屏幕上的我的UIView对象。UIPanGestureRecognizer检测何时一个对象穿过另一个对象

我想做 的主要目的是找出我怎么能赶上事件,当两个物体相互交叉什么。例如两个UIView对象。所以首先它是静态对象(不移动),另一个我可以在屏幕上随意移动。因此,我需要知道我的第二个对象(UIView)穿过静态对象的时刻。另外主要的问题是这些视图位于不同的视图上。因此,第一个静态视图位于称为“编辑视图”的视图上,而另一个视图位于称为“工具栏”的视图上。所以这意味着我不能只比较两个矩形并享受它。有没有什么办法如何比较两个对象时,他们互相交叉,但也许没有方法,只是比较他们rect。

回答

1

我认为你要找的是UIView的convertRect:toView:方法。

CGRect *convertedView1Rect = [view1 convertRect:view1.frame toView:view2]; 
BOOL intersects = CGRectIntersection(convertedView1Frame, view2.frame); 
+0

由于它是我所需要的,但我加点校正。 CGRect convertedViewFromTools = [self.view convertRect:viewFromTools.frame fromView:viewFromTools.superview]; CGRect相交= CGRectIntersection(convertedViewFromTools,vc.view.frame); BOOL isIntersected = intersects.size.height> 0; –

1
Following method required two parameter of rectangle's - just pass rect1 and rect2 , and it return bool value whether it intersect or not - 

    if(CGRectIntersectsRect(<#CGRect rect1#>, <#CGRect rect2#>)) { 
     NSLog("Intersect"); 
    } else { 
     NSLog("Not Intersect"); 
    } 
+0

谢谢,是的,有我想要的东西,但正如我所说这些是不同的意见,我不能仅仅比较。因为如果两个视图都位于一个视图上,我可以使其运行。 –

相关问题