私の見解では、以下のように長押しジェスチャーとパンジェスチャーを追加しました
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(fitToView:)];
[longPressRecognizer setDelegate:self];
longPressRecognizer.allowableMovement = 5.0f;
longPressRecognizer.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPressRecognizer];
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
panRecognizer.delegate = self;
[self addGestureRecognizer:panRecognizer];
[panRecognizer requireGestureRecognizerToFail:longPressRecognizer];
およびそれらのジェスチャ ハンドラーを以下に示します。
-(void)move:(UIPanGestureRecognizer*)recognizer {
CGPoint translatedPoint = [recognizer translationInView:self.imgView ];
if ([recognizer state] == UIGestureRecognizerStateBegan) {
_firstX = [self.imgView center].x;
_firstY = [self.imgView center].y;
}
CGAffineTransform newTransform = CGAffineTransformTranslate(CGAffineTransformIdentity, translatedPoint.x , translatedPoint.y );
self.imgView.transform = newTransform;
}
-(void)fitToView:(UILongPressGestureRecognizer*)recognizer {
if ([recognizer state] == UIGestureRecognizerStateBegan) {
self.imgView.transform = CGAffineTransformIdentity;
}
}
長押しは画像を復元するためのものです。しかし、画像を長押しすると、デリゲートも呼び出され、行ったすべての変更が復元されます。[panRecognizer requireGestureRecognizerToFail:longPressRecognizer];
以前は長押し認識に失敗していました。しかし、それは起こりません。私もデリゲートメソッド
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:を試しました。しかし、それはうまくいきませんでした