Können UIPinchGestureRecognizer und UIPanGestureRecognizer zusammengeführt werden?

8

Ich habe Mühe, herauszufinden, ob es möglich ist, einen einzelnen kombinierten Gestenerkenner zu erstellen, der UIPinchGestureRecognizer mit UIPanGestureRecognizer kombiniert.

Ich verwende Pan für die Ansichtsübersetzung und klicke auf die Ansichtskalierung. Ich mache eine inkrementelle Matrixverkettung, um eine resultierende endgültige Transformationsmatrix abzuleiten, die auf die Ansicht angewendet wird. Diese Matrix hat sowohl Skalierung als auch Translation. Die Verwendung separater Gestenerkenner führt zu einer zitternden Bewegung / Skalierung. Nicht was ich will. Daher möchte ich die Verkettung von Maßstab und Übersetzung einmal innerhalb einer einzigen Geste handhaben. Kann jemand bitte etwas Licht darauf werfen, wie man das macht?

    
dugla 08.02.2011, 16:24
quelle

1 Antwort

17

14.06.14: Aktualisierter Beispielcode für iOS 7+ mit ARC.

Die UIGestureRecognizer können zusammenarbeiten und Sie müssen nur sicherstellen, dass Sie die Transformationsmatrix der aktuellen Ansicht nicht löschen. Verwenden Sie die CGAffineTransformScale-Methode und zugehörige Methoden, die eine Transformation als Eingabe verwenden, anstatt sie von Grund auf neu zu erstellen (es sei denn, Sie behalten die aktuelle Rotation, Skalierung oder Übersetzung selbst bei.)

Laden Sie das Xcode-Projekt

herunter

Hinweis: iOS 7 verhält sich seltsam mit UIView in IB, die Pan / Pinch / Rotate-Gesten angewendet haben. iOS 8 behebt es, aber meine Problemumgehung besteht darin, alle Ansichten in Code wie dieses Codebeispiel hinzuzufügen.

Demo-Video

  1. Fügen Sie sie einer Ansicht hinzu und stimmen Sie mit dem UIGestureRecognizerDelegate-Protokoll

    überein %Vor%
  2. Implementieren Sie Gestenmethoden

    %Vor%

Ressourcen

Paul Solt 27.03.2011 14:30
quelle