1

こちらのドキュメントを読んでください。

PANのジェスチャを正常にセットアップする方法を知っていますC4ObjectPANただし、ジェスチャを無効にするにはどうすればよいですか?

使用中...

[object setUserInteractionEnabled:NO]

TAP...イベントを含むすべてのジェスチャを無効にし、...

object.gestureRecognizers = NO

PAN...ジェスチャーを再初期化できません。

他のジェスチャーイベントに影響を与えずにPANジェスチャーを無効にする(オン/オフを切り替える)方法を誰かが私と共有できれば、それは大歓迎です。PAN

4

1 に答える 1

1

gestureForName:オブジェクトを返す メソッドを使用して、オブジェクトに追加したジェスチャにアクセスできUIGestureRecognizerます。そこから、そのジェスチャ レコグナイザーを操作して、そのプロパティを直接変更できます。

enabledジェスチャ認識エンジンのオン/オフを切り替えるには、そのプロパティの値を変更するだけです。

以下は私にとってはうまくいきます:

#import "C4WorkSpace.h"

@implementation C4WorkSpace {
    UIGestureRecognizer *gesture;
    C4Shape *square, *circle;
}

-(void)setup {
    square = [C4Shape rect:CGRectMake(0, 0, 100, 100)];
    square.center = self.canvas.center;

    circle = [C4Shape ellipse:square.frame];
    circle.center = CGPointMake(square.center.x, square.center.y + 200);
    [self listenFor:@"touchesBegan" fromObject:circle andRunMethod:@"toggle"];

    [self.canvas addObjects:@[square, circle]];

    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];
}

-(void)toggle {
    gesture.enabled = !gesture.isEnabled;
    if(gesture.enabled == YES) square.fillColor = C4GREY;
    else square.fillColor = C4RED;
}

@end

この例の重要な部分は次のとおりです。

    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];

実装には というUIGestureRecognizer変数があることに注意してくださいgesture。2 行目で行うことは、オブジェクトにPAN関連付けられたジェスチャを見つけて、それへの参照を保持することです。square

次に、円をタッチして切り替えるたびに、次のことを行います。

gesture.enabled = !gesture.isEnabled;

つまり、ジェスチャが有効になっている場合は無効にします (逆も同様です)。

UIGestureRecognizer Class Referenceで詳細を確認できます。

于 2013-08-12T05:10:49.167 に答える