我正在使用UIPanGestureRecognizer
在屏幕上拖动UIButton
。想法是用户可以将其拖动到文件夹上以将其插入文件夹(如iOS图标)。我发现这个代码可以正常工作,如果我想检测按钮何时与图像重叠:
-(void) touchesEnded:(NSSet *) touches {
if(CGRectIntersectsRect([imageViewA frame], [imageViewB frame]) {
NSLog(@"Do something.");
}
}
但是由于按钮很大并且有更多图像彼此相邻,因此可能会发生按钮与它们重叠的情况。因此,我想检测实际用户手指握住UIButton
与图像重叠以触发正确的动作。有什么想法吗?
答案 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");
}
}
}