手指拖动时检测UIButton与UIImageView重叠

时间:2013-04-14 15:42:29

标签: ios objective-c uigesturerecognizer uipangesturerecognizer

我正在使用UIPanGestureRecognizer在屏幕上拖动UIButton。想法是用户可以将其拖动到文件夹上以将其插入文件夹(如iOS图标)。我发现这个代码可以正常工作,如果我想检测按钮何时与图像重叠:

-(void) touchesEnded:(NSSet *) touches {
if(CGRectIntersectsRect([imageViewA frame], [imageViewB frame]) {
  NSLog(@"Do something.");
}
  }

但是由于按钮很大并且有更多图像彼此相邻,因此可能会发生按钮与它们重叠的情况。因此,我想检测实际用户手指握住UIButton与图像重叠以触发正确的动作。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

UIGestureRecognizer会识别平底锅,当它结束时,您可以使用locationInView:在按钮的超级视图中找到手指的位置。然后,您可以查看它们是否与CGRectContainsPoint(frame, point)重叠:

- (void)handlePanGesture:(UIPanGestureRecognizer*)recognizer {
    if ([recognizer state] == UIGestureRecognizerStateEnded) {
        CGPoint fingerPoint = [recognizer locationInView:someImageView.superview];

        if (CGRectContainsPoint(someImageView.frame, fingerPoint)) {
              NSLog(@"Do something");
        }
    }
}