2013-12-20 52 views
0

我有兩個滾動視圖,一個在左側,另一個在右側。CGRectIntersectsRect沒有檢測到相交的視圖

在左側滾動視圖中,我已將uiviews列表與標籤放在它上面,用於命名它們。

在右側滾動視圖中,我已經放置滾動視圖列表,在每個滾動視圖中,我已經爲它們命名了uiviews標籤列表。

我正在使用CGRectIntersectsRect來檢測左側滾動視圖中的一個uiview與右側滾動視圖中任何使用拖放的uiview的交集。

我的問題是,CGRectIntersectsRect沒有檢測到相交的視圖。

我正在使用uinavigationcontroller。

我已經在谷歌搜索中使用過OBDragDropTest項目。在這我正在做出改變。

我的代碼如下,

-(void) handleDropAnimationForOvum:(OBOvum*)ovum withDragView:(UIView*)dragView dragDropManager:(OBDragDropManager*)dragDropManager 
{ 
    UIView *itemView = nil; 


    if ([ovum.dataObject isKindOfClass:[NSNumber class]]) 
    { 

     itemView = [self.view viewWithTag:[ovum.dataObject integerValue]]; 



     [viewsAry removeAllObjects]; 

     [viewsAry addObjectsFromArray:unAssignedViewContents]; 

     [viewsAry addObjectsFromArray:removeViewContents]; 

     [viewsAry addObjectsFromArray:repairViewContents]; 

     [viewsAry addObjectsFromArray:paintViewContents]; 

     [viewsAry addObjectsFromArray:refitViewContents]; 

     [viewsAry addObjectsFromArray:detailViewContents]; 

     [viewsAry addObjectsFromArray:completedViewContents]; 


     NSArray *subViewsInView=[NSArray arrayWithArray:viewsAry]; 






     for(UIView *theView in subViewsInView) 
     { 

      if (![itemView isEqual:theView]) 
      { 

       if(CGRectIntersectsRect(theView.frame, ovum.dragView.frame)) 
       { 
        NSLog(@"view Tag = %d",theView.tag); 
       } 

      } 

     } 



    } 

我已經爲所有的意見和scrollviews setUserInteractionEnabled =真。

請給這個問題的解決方案。

+1

請發佈您的代碼。 – rdelmar

+1

必須顯示代碼。你使用的座標系是什麼? – Wain

回答

1

代替下面的代碼

if (![itemView isEqual:theView]) 
{ 
    if(CGRectIntersectsRect(theView.frame, ovum.dragView.frame)) 
    { 
     NSLog(@"view Tag = %d",theView.tag); 
    } 
} 

我用

if (![itemView isEqual:theView]) 
{ 
    CGPoint point = [theView convertPoint:dragView.center fromView:dragView.superview]; 
    if([theView pointInside:point withEvent:nil]) 
    { 
     NSLog(@"view Tag = %d",theView.tag); 
    } 
} 

和子視圖的交叉點的檢測完成。現在我可以拿到接收器的標籤號了。