0

我正在动态创建按钮UIView。我可以使用此代码通过拖动来移动它们

- (IBAction)draggedOut: (id)sender withEvent: (UIEvent *) event: (NSSet *)touches {
   UIButton *selected = (UIButton *)sender;
   selected.center = [[[event allTouches] anyObject] locationInView:hallView];
}

我可以有多个按钮。当我拖动某个按钮时,我需要检查是否与其他按钮有任何交集?

我怎样才能做到这一点?

4

3 回答 3

1

您可以获得按钮框架并使用它进行检查

if(CGRectIntersectsRect(firstButton.frame, secondButton.frame))  {
      return YES;
}
于 2013-05-01T12:33:57.673 回答
1

您应该循环浏览视图中的其他按钮,并检查每个按钮是否与拖动的按钮相交:

CGRectIntersectsRect (draggedButton.frame, anotherButton.frame);

您可以使用如下函数:

- (BOOL)isThereButtonsIntersectionInView:(UIView *)containerView 
                               forButton:(UIButton *)draggedButton
{
    for(UIView *view in containerView.subviews){
        if([view isKindOfClass:[UIButton class]] &&
            view != draggedButton &&
            CGRectIntersectsRect (view.frame, draggedButton.frame)){

                return YES;
            }
        }
    }

    return NO;
}

调用此方法,将包含按钮和拖动按钮的视图作为参数传递。

于 2013-05-01T12:37:08.993 回答
1

您只需将该按钮的框架与所有其他按钮的框架进行比较。这是一些示例代码,它可能应该放在您的视图控制器中,因为它需要了解其他按钮。

- (BOOL) button:(UIButton*)button intersectsWithButtons:(NSArray*)moreButtons
{
    CGRect buttonFrame = button.frame;
    for (UIButton *checkButton in moreButtons) {
        if (button != checkButton && CGRectIntersectsRect(buttonFrame, checkButton.frame))
            return YES;
    }
    return NO;
}
于 2013-05-01T12:38:54.237 回答