1

我正在使用UIPanGestureRecognizer在屏幕上拖動一個UIButton。這個想法是,用戶可以將它拖到文件夾上以將其插入文件夾(如iOS圖標)。此代碼,我發現工作正常,如果我要當按鈕與圖像重疊檢測:當手指拖動UIButton重疊時檢測UIImageView

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

但由於按鍵大,有更多的圖像一個接一個地排列,可能發生的按鈕,重疊兩個都。因此,我想要檢測持有UIButton的實際用戶手指何時與圖像重疊以觸發正確的操作。有任何想法嗎?

回答

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"); 
     } 
    } 
} 
+0

其實我忘了說了,但是我用的,如果([(UIPanGestureRecognizer *)主使國] == UIGestureRecognizerStateEnded){未觸及結束... – Alessandro

+0

與CGRectContainsPoint我怎樣才能設置我想檢查的圖像? – Alessandro

+0

我已更改代碼以反映其用作手勢識別器的目標幷包含圖像視圖參考。如果你需要檢查多個圖像,你可以遍歷它們的集合並將'CGRectContainsPoint()'移動到該循環體中。 – jszumski