あなたは尋ねました:
UIGestureRecognizerStateEnded
基本的に、まだプロセスのタッチが発生するのかUIGestureRecognizer
、それともその時点ですべてのタッチが終了するのか、疑問に思っています。
取得するとUIGestureRecognizerStateEnded
、はい、ジェスチャーが完了します。ただし、明らかに、その時点でビューからジェスチャレコグナイザーを削除しない限り、ユーザーが新しいジェスチャを開始すると、ジェスチャ認識プロセスはから最初からやり直しUIGestureRecognizerStateBegan
ます。
さらに、あなたは言った:
奇妙な値を取得しているtranslationInView
ので、ここで質問したかっただけです。
あなたのコードサンプルは、あなたがピンチジェスチャを扱っていることを示唆していますが、それはしませんtranslationInView
。そのため、あなたがどのような「奇妙な値」を取得しているかはわかりません。ただし、ジェスチャを設定してdelegate
実装することにより、2つのジェスチャを同時に実行できshouldRecognizeSimultaneouslyWithGestureRecognizer
ます。
- (void)viewDidLoad
{
[super viewDidLoad];
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self
action:@selector(handlePinch:)];
pinch.delegate = self;
[self.view addGestureRecognizer:pinch];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self
action:@selector(handlePan:)];
pan.delegate = self;
[self.view addGestureRecognizer:pan];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]])
return YES;
if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
return YES;
return NO;
}
- (void)handlePinch:(UIPinchGestureRecognizer *)gesture
{
CGFloat scale = [gesture scale];
NSLog(@"%s: %@: scale=%.2f", __FUNCTION__, [self stringFromGestureState:gesture.state], scale);
}
- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
CGPoint translation = [gesture translationInView:gesture.view];
NSLog(@"%s: %@: translation=%@", __FUNCTION__, [self stringFromGestureState:gesture.state], NSStringFromCGPoint(translation));
}
上記のコードは機能します。ここで、handlePan
はパンをhandlePinch
返し、はピンチを返し、translationInView
ofは例外的にhandlePan
見えません。おそらく、ピンチジェスチャをどのように使用して取得しているかを示し、取得translationInView
している値の何がおかしいのかを教えてください。