これは可能ですし、簡単です!あなたのジェスチャーレコグナイザーの代理人になることです。誰もが知っているように見えるものは存在しない。これらのアイバーズは負荷をしたビューでインスタンス化されている
UIPinchGestureRecognizer *myPinchGR;
UIPanGestureRecognizer *myPanGR;
:<UIGestureRecognizerDelegate>
と2アイバーズを私のビューコントローラのサブクラスでは、私は宣言している両方のプロトコルに準拠します。デリゲートとしてselfを設定することに注意してください。 UIGestureRecognizer
によって作られたデリゲート呼び出しの
-(void)viewDidLoad{
[super viewDidLoad];
myPanGR = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTarget:)];
myPanGR.delegate = self;
[self.view addGestureRecognizer:myPanGR];
myPinchGR = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchTarget:)];
myPinchGR.delegate = self;
[self.view addGestureRecognizer:myPinchGR];
}
一つ、私が二つ以上のジェスチャー認識機能を持っていた場合、この関数は、いくつかのロジックが含まれなければならないだろうshouldRecognizeSimultaneouslyWithGestureRecognizer:
です。しかし、2つしかないので、私はちょうどYES
を返すことができます。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
これで、適切な条件をスクリーニングするために、アクションメソッドにわずかな(わずかな)余分なロジックを含める必要があります。
-(void)panTarget:(UIPanGestureRecognizer *)panGR{
if (panGR.numberOfTouches > 1) return;
NSLog(@"panny");
}
-(void)pinchTarget:(UIPinchGestureRecognizer *)pinchGR{
if (pinchGR.numberOfTouches < 2) return;
NSLog(@"pinchy");
}
このコードを実行すると、ログが表示されます。あなたはあなたが "ピンチ"を参照してくださいし、前後に2番目の指を置くときに "パニー"が表示されます1つの指を動かすときに表示されます。