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で詳細を確認できます。