Wie kann ich eine Sequenz von UITouch-Ereignissen abbrechen?
Ich habe eine UIImage
Blick, reagiert auf touch-Ereignisse. Ich möchte Abbrechen die touch-Reihenfolge, das heißt, weitere Anrufe zu touchesMoved:
wenn der touch geht außerhalb bestimmter Grenzen liegen. Wie kann ich das tun?
Ich weiß, dass in touchesMoved:
ich kann inspizieren die Koordinaten des touch-Objekts, und es zu ignorieren, aber was ich nicht weiß ist, wie Sie zum Abbrechen der Sequenz zusammen. Ich sehe keine Methode dokumentiert in der Apple Developer UIResponder
- Referenzdass ich Aufruf zum Abbrechen einer touch-Sequenz.
InformationsquelleAutor der Frage subjective-c | 2009-02-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Lösung kann ein bisschen notdürftigem, aber das könnte man umsetzen und manuell aufrufen
Ich bin stützen diese Lösung Locker auf einige Optimierungen ich habe den MoveMe-Beispiel-app in Apple ' s iPhone sample code Seite, wo ich verändert die
touchesMoved
Methode wie folgt Aussehen:InformationsquelleAutor der Antwort Michael Fey
Müssen Sie rufen Sie
[super touchesMoved:withEvent:]
damit den super Blick sauber aus dem Ereignis aber noch wichtiger ist, müssen Sie nicht nennen[super touchesCancelled:withEvent:]
.Hier ist, was ich benutzt habe auf eine Zelle, um es zu halten aus immer aktiviert, wenn ich erkannt streichen:
InformationsquelleAutor der Antwort David Beck
Versuchen vorübergehende Einstellung der UIImageView ist userInteractionEnabled-Eigenschaft auf NEIN
InformationsquelleAutor der Antwort Zaky German
Ich habe vor dem gleichen problem vor kurzem und gefunden, die ein standard-Weg, um es zu lösen.
Sie können [[UIApplication sharedApplication] beginIgnoringInteractionEvents], um mehr zu liefern touchesMoved Veranstaltungen Ihrer ganze app. Stellen Sie sicher, dass Sie mit [[UIApplication sharedApplication] endIgnoringInteractionEvents] wenn Sie brauchen, um zu erhalten, berührt wieder.
InformationsquelleAutor der Antwort user309122
Ich glaube es ist nicht möglich, denn ich sehe es nicht dokumentiert und keine dieser Lösungen funktioniert.
InformationsquelleAutor der Antwort ma11hew28
"Brute-force" - Lösung, je nachdem, ob es Ihren Bedürfnissen entspricht: Entfernen und neu initialisieren, Untersicht, erhält die berührt oder darauf antwortet (natürlich aufpassen, Rahmen und Inhalt).
InformationsquelleAutor der Antwort ceekay
Dieser code wird Ihnen helfen. Ich deaktivieren Sie die touch-event in
touchesMoved:
Methode, und ich bin Aktivierung der touch-event intouchesCancelled:
MethodeInformationsquelleAutor der Antwort Indrajeet
Ich erreichen dies, indem der Blick vom superview und das hinzufügen es sofort zurück.
Diese bricht die responder-Kette zur Ansicht, damit alle verbleibenden berührt nicht empfangen werden, auf der Ansicht. Die nächste Note wird noch empfangen werden als normal.
InformationsquelleAutor der Antwort Shimon Young
Auf iOS5 scheint es eine private Methode in UITouch
Abhängig von apple ' s implementation könnte es stoppen, senden von Ereignissen
Einen anderen Weg, dies zu tun wäre mit assoziativen Objekten
InformationsquelleAutor der Antwort DanZimm
War ich gerade zu lösen versucht, so etwas wie dieses, und festgestellt, dass keine der aufgeführten Lösungen Ihr für mich gearbeitet. Die beste, die ich bewältigen könnte, wurde vorübergehend ignorieren, die berührt, aber dann werden Sie wieder aufgenommen, wenn die Note wieder in die Ansicht.
Endlich gelöst.
So, an dieser Stelle, wird nichts passieren, wenn Sie eine Stelle außerhalb der Ansicht.
Ich denke, das wird für Sie arbeiten, es sei denn, Sie haben einen bestimmten Grund für buchstäblich benötigen die touch-Sequenz abgebrochen.
InformationsquelleAutor der Antwort James White
Können Sie erstellen, die Kategorie zu UITouch. Können Sie erklären
Und wenn Sie ändern, berühren Sie.Blick zum nil, zum Beispiel, können Sie simulieren das Ende des Einsatzes von touch-events
InformationsquelleAutor der Antwort user2292337
Können Sie überprüfen, ob das touch-point-Standorte sind in CGRect (ie. Punkte sind im Rechteck Ihres Bildansicht) oder nicht. Wenn Sie nicht in, Rect, die Note wird gestrichen.
InformationsquelleAutor der Antwort Surjit Joshi