touchesMoved: withEvent: и UIRotationgestureRecognizer не работают вместе - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь этими двумя способами перемещать и вращать UIView. Оба метода работают отдельно, но если я поверну, а затем переместу UIView, он исчезнет.

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {


CGRect rect = self.aView.frame;

UITouch *touch = [touches anyObject];

CGPoint pPoint = [touch previousLocationInView:self.view];
CGPoint cPoint = [touch locationInView:self.view];

float deltaX = cPoint.x - pPoint.x;
float deltaY = cPoint.y - pPoint.y;

rect.origin.x = rect.origin.x + deltaX;
rect.origin.y = rect.origin.y + deltaY;

self.aView.frame = rect;

}
- (void)rotate:(UIRotationGestureRecognizer *) recognizer {

    CGFloat rotation = angle + recognizer.rotation;

    NSLog(@"%f", angle * 180 / M_PI);

    self.aView.transform = CGAffineTransformMakeRotation (rotation);

    if (recognizer.state == UIGestureRecognizerStateEnded) 
        angle = rotation;

}

1 Ответ

2 голосов
/ 05 февраля 2012

Распознаватели жестов имеют приоритет перед touchMoved, поэтому их трудно использовать с одним и тем же видом.

Используйте UIPanGestureRecognizer вместо touchMoved для обработки перетаскивания UIView.Затем вы можете заставить UIPanGestureRecognizer и UIRotationGestureRecognizer взаимодействовать друг с другом, реализовав метод

– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

, который определен в протоколе UIGestureRecognizerDelegate.

...