我正在UIView
动态创建按钮。
我可以使用此代码拖动来移动它们
- (IBAction)draggedOut: (id)sender withEvent: (UIEvent *) event: (NSSet *)touches {
UIButton *selected = (UIButton *)sender;
selected.center = [[[event allTouches] anyObject] locationInView:hallView];
}
我可以有一个以上的按钮。当我拖动某个按钮时,我需要检查是否有与其他按钮的交叉点?
我该怎么做?
答案 0 :(得分:1)
您可以获取按钮框并使用此
进行检查if(CGRectIntersectsRect(firstButton.frame, secondButton.frame)) {
return YES;
}
答案 1 :(得分: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;
}
调用此方法将包含按钮和拖动按钮的视图作为参数传递。
答案 2 :(得分: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;
}