Klingt einfach. Halten Sie das Trackpad gedrückt, bewegen Sie den Finger, lassen Sie es los . Aber irgendwie wird kein Wischen ausgelöst (stattdessen wird das Schwenken ausgelöst).
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc]
initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];
Pan wird stattdessen durch die obige Sequenz erkannt.
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
initWithTarget:v action:@selector(handlePan:)];
[v addGestureRecognizer: panGesture];
Wenn Pan kommentiert wird, wird Swipe durch dieselbe Geste erkannt. Damit 2 Fragen:
- Was ist dann der Unterschied zwischen einer Pfanne und einem Schlag?
- Wie kann man einen Swipe auf dem iPhone Simulator simulieren?
ios
gesture-recognition
gestures
James Raitsev
quelle
quelle
Antworten:
Per Definition ist eine Wischgeste notwendigerweise auch eine Schwenkgeste - beide beinhalten eine translatorische Bewegung von Berührungspunkten. Der Unterschied liegt in der Semantik des Erkenners: Ein Pan-Erkenner sucht nach dem Beginn der Translationsbewegung und meldet weiterhin Bewegungen in jede Richtung über die Zeit, während ein Wischerkenner sofort entscheidet, ob sich die Berührungen des Benutzers linear in die gewünschte Richtung bewegen.
Standardmäßig erkennen keine zwei Erkenner dieselbe Geste, sodass ein Konflikt zwischen Schwenken und Streichen besteht. Höchstwahrscheinlich "gewinnt" Ihr Pan-Erkenner den Konflikt, weil seine Geste einfacher / allgemeiner ist: Ein Swipe ist ein Pan, aber ein Pan ist möglicherweise kein Swipe, sodass der Pan zuerst erkennt und andere Erkenner ausschließt.
Sie sollten in der Lage sein, diesen Konflikt mithilfe der Delegate-Methode
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
oder möglicherweise ohne Delegierung zu lösen , indem Sie den Pan-Erkenner vom Swipe-Erkenner mit abhängig machenrequireGestureRecognizerToFail:
.Wenn der Konflikt gelöst ist, sollten Sie in der Lage sein, einen Ein-Finger-Schlag durch schnelles Ziehen der Maus zu simulieren. (Da die Maus präziser als Ihr Finger ist, ist sie etwas kniffliger als die eigentliche Ausführung auf einem Gerät.) Das Schwenken / Wischen mit zwei Fingern kann durch Halten der Wahltaste und der Umschalttaste erfolgen.
quelle
Die Wischgeste funktioniert, wenn Sie Ihren Finger nur in bestimmte Richtungen ziehen (nach oben wischen, nach unten wischen, nach links wischen, nach rechts wischen). Zum Beispiel wischbare Zellen in der Tabellenansicht.
Die Schwenkgeste funktioniert, wenn Sie Ihren Finger in eine beliebige Richtung ziehen. Sie können es beschleunigen oder verlangsamen. Zum Beispiel, wenn Sie ein Objekt von einem Ort an einen anderen bewegen oder einen Spinner drehen.
quelle
UIPanGestureRecognizer ist eine konkrete Unterklasse von UIGestureRecognizer , die nach Schwenkgesten (Ziehen) sucht. Der Benutzer muss einen oder mehrere Finger auf eine Ansicht drücken, während er sie schwenkt. Clients, die die Aktionsmethode für diesen Gestenerkenner implementieren, können ihn nach der aktuellen Übersetzung und Geschwindigkeit der Geste fragen.
Eine Schwenkgeste ist kontinuierlich. Es beginnt ( begann ), wenn sich die minimal zulässige Anzahl von Fingern ( MinimumNumberOfTouches ) genug bewegt hat, um als Pfanne betrachtet zu werden. Es ändert sich, wenn sich ein Finger bewegt, während mindestens die Mindestanzahl von Fingern gedrückt wird. Es endet ( endet ), wenn alle Finger angehoben werden.
Clients dieser Klasse können in ihren Aktionsmethoden das UIPanGestureRecognizer-Objekt nach der aktuellen Übersetzung der Geste ( Übersetzung (in :) ) und der Geschwindigkeit der Übersetzung ( Geschwindigkeit (in :) ) abfragen . Sie können die Ansicht angeben, deren Koordinatensystem für die Translations- und Geschwindigkeitswerte verwendet werden soll. Clients können die Übersetzung auch auf einen gewünschten Wert zurücksetzen.
Swift 3 UIPanGestureRecognizer-Demo Beispiel: - Ressourcenverknüpfung
Gemäß dem Apfeldokument. Apple UITapGestureRecognizer
UITapGestureRecognizer ist eine konkrete Unterklasse von UIGestureRecognizer , die nach einzelnen oder mehreren Abgriffen sucht. Damit die Geste erkannt wird, muss die angegebene Anzahl von Fingern mehrmals auf die Ansicht tippen.
Obwohl Taps diskrete Gesten sind, sind sie für jeden Zustand des Gestenerkenners diskret. Somit wird die zugehörige Aktionsnachricht gesendet, wenn die Geste beginnt, und wird für jeden Zwischenzustand bis (und einschließlich) dem Endzustand der Geste gesendet. Code, der Tap-Gesten verarbeitet, sollte daher den Status der Geste testen.
Swift 3 UITapGestureRecognizer Demo Beispiel Resource Link
Beispielbild für Recognizer
quelle
Laut http://hammerjs.github.io/ ist der Unterschied meiner Meinung nach:
Die Geste ist dieselbe, beide benutzen einen Finger und bewegen sich.
quelle