0

を使用していくつかのオブジェクトを移動しましたPan Gesture。次のいずれかの場合に、オブジェクトの移動を永久に停止するようにします。

  1. 特定の (静止しており、移動できない) オブジェクトに重なっている、または
  2. 一定範囲の場所に入ります。

を使用して 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];
    }
}
4

2 に答える 2

1

UIGestureRecognizer Delegate でオーバーラップをキャッチしてみてください。

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

}

メソッドでは、ジェスチャ認識オブジェクトを使用してcheckForOverlap関連するポイントなどをテストし、そうであれば YES を返します。

(もちろん、上記の短いバージョンは

return ![self checkForOverlap:gestureRecognizer];

)

于 2012-07-26T11:24:24.490 に答える
0

セットアップ コードが含まれていないため、この回答は暗闇の中を突っついているようなものですが、removeGestureRecognizer はパラメーターを必要とするメソッド、つまり削除するジェスチャ レコグナイザーであることが最初にわかりました。したがって、3行目のショーは次のようになります

[self removeGestureRecognizer: recognizer];

すべてのデリゲート メソッドでこれらの参照を常に渡す理由の 1 つは、まさにそれです。作業対象のオブジェクトを知っている...

addGestureRecognizer/removeGestureRecognizer のペアを使用したすべてのケースで、それらはスムーズに機能したので、あなたのケースでも同様に機能することを期待しましょう!

よろしく、のび

于 2012-07-26T11:07:56.570 に答える