2012-07-26 64 views
0

我使用Pan Gesture移動了一些對象。現在我希望對象停止永久移動時或者:iOS:在對象重疊時禁用平移手勢

  1. 它重疊的特定(固定的,不能夠移動的)對象, 或
  2. 它進入一定範圍內的位置。

我試圖阻止它,當兩個對象重疊使用removeGestureRecogniser但它沒有工作。

- (IBAction)cowimagemove:(UIPanGestureRecognizer *)recognizer { 

if (cowimage.center.x==stayimage.center.x) { 
    [self removeGestureRecogniser]; 
    } 
else { 
    CGPoint translation = [recognizer translationInView:self.view]; 
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, 
             recognizer.view.center.y + translation.y); 
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; 
    } 
} 
+0

感謝名單所有人。看來問題的根源在於我不知道如何使用removeGestureRecogniser。我沒有包含 '@property(nonatomic,assign)UIGestureRecognizer * gestureRecogniser;' in view.h Thanx再次!! – m4Die 2012-07-27 03:07:01

回答

0

因爲你沒有包含任何設置代碼,這個答案是有點像在黑暗中閒逛,但打我的第一件事就是removeGestureRecognizer是需要一個參數,即一個方法您想要移除的手勢識別器。所以第3行顯示閱讀

[self removeGestureRecognizer: recognizer]; 

一個原因總是在所有的委託方法通過左右這些引用恰恰是 - 你知道哪個對象你的工作......

在我使用addGestureRecognizer所有病例/ removeGestureRecognizer對,他們工作順利,所以讓我們希望他們也在你的情況!

問候,比康夫

1

嘗試捕捉你的UIGestureRecognizer代表的重疊。

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { 
    if ([self checkForOverlap:gestureRecognizer]) { 
     return NO; 
    } 
    return YES; 

} 

在你checkForOverlap方法使用手勢識別對象來測試相關穴位等,並返回YES,如果是這種情況。

(當然更短的版本上面會

return ![self checkForOverlap:gestureRecognizer];