Oto mój kod:iOS Pinch Skala i Two Finger obracają się jednocześnie
viewDidLoad:
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinch:)];
[self.canvas addGestureRecognizer:pinch];
pinch.delegate = self;
UIRotationGestureRecognizer *twoFingersRotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(pinchRotate:)];
[[self canvas] addGestureRecognizer:twoFingersRotate];
twoFingersRotate.delegate = self;
Kod Na Pinches i obraca:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
-(void)pinchRotate:(UIRotationGestureRecognizer*)rotate
{
SMImage *selectedImage = [DataCenter sharedDataCenter].selectedImage;
switch (rotate.state)
{
case UIGestureRecognizerStateBegan:
{
selectedImage.referenceTransform = selectedImage.transform;
break;
}
case UIGestureRecognizerStateChanged:
{
selectedImage.transform = CGAffineTransformRotate(selectedImage.referenceTransform, ([rotate rotation] * 55) * M_PI/180);
break;
}
default:
break;
}
}
-(void)pinch:(UIPinchGestureRecognizer*)pinch
{
SMImage *selectedImage = [DataCenter sharedDataCenter].selectedImage;
[self itemSelected];
switch (pinch.state)
{
case UIGestureRecognizerStateBegan:
{
selectedImage.referenceTransform = selectedImage.transform;
break;
}
case UIGestureRecognizerStateChanged:
{
CGAffineTransform transform = CGAffineTransformScale(selectedImage.referenceTransform, pinch.scale, pinch.scale);
selectedImage.transform = transform;
break;
}
default:
break;
}
}
Moja rotacja działa świetnie na jego własna i moja skala działa doskonale na własną rękę, ale nie będą działać razem. Zawsze działa, a drugi nie. Kiedy zaimplementujęRemognizeSimultaneouslyWithGestureRecognizer, oba gesty zdają się walczyć ze sobą i przynoszą słabe wyniki. czego mi brakuje? (Tak, zaimplementowałem <UIGestureRecognizerDelegate>
)
Czy możesz dać mi przykład kodu, w jaki sposób mogę zastosować zarówno w tym samym czasie? mój UIRotationGestureRecognizer nie ma właściwości "scale", a mój UIPinchGestureRecognizer nie ma właściwości "rotation". I nie jestem pewien, które afery używałbym do robienia obu jednocześnie. – spentak
Działa pięknie. Lepiej mieć tę wiedzę dzięki! – spentak
Cieszę się, że mogę pomóc. BTW Zmieniłem ostatni fragment o tym, jak robić panoramowanie. Ponadto możesz umieścić w XIB identyfikatory gestów i nie musisz ich tworzyć za pomocą kodu w 'viewDidLoad'. Wystarczy przeciągnąć urządzenie rozpoznające na widok, a następnie podłączyć uczestnika i punkty akcji urządzenia rozpoznającego z przeciągnięciami kontrolnymi z urządzenia rozpoznającego do właściciela pliku. –