Was passiert wirklich, wenn call setCancelsTouchesInView?

7

Ich frage mich, was wirklich passiert, wenn ich setCancelsTouchesInView aufruft. Es ist nicht im offiziellen Dokument enthalten Ссылка

Danke

    
jebberwocky 24.10.2012, 03:34
quelle

2 Antworten

29

ACB hat die UIGestureRecognizer Referenz angegeben. Um es ein wenig konkreter zu machen, nehmen wir an, Sie haben eine Ansicht mit einem Pan-Gestenerkennungsprogramm, und Sie haben diese Methoden in Ihrem View-Controller:

%Vor%

Und natürlich ist der Pan-Gesten-Erkenner so konfiguriert, dass er die Nachricht panGestureRecognizerDidUpdate: sendet.

Nehmen wir nun an, Sie berühren die Ansicht, bewegen Ihren Finger so weit, dass die Schwenkbewegung erkannt wird, und heben Sie dann Ihren Finger. Was druckt die App?

Wenn für den Gestenerkenner cancelsTouchesInView auf YES gesetzt ist, protokolliert die App diese Nachrichten:

%Vor%

Sie können mehr als ein touchesMoved vor dem Abbrechen erhalten.

Wenn Sie also cancelsTouchesInView auf YES (Standardeinstellung) setzen, bricht das System die Berührung ab, bevor die erste Nachricht vom Gestenerkenner gesendet wird, und Sie erhalten keine weiteren berührungsbezogenen Nachrichten mehr diese Berührung.

Wenn für den Gestenerkenner cancelsTouchesInView auf NO gesetzt ist, protokolliert die App diese Nachrichten:

%Vor%

Wenn Sie also cancelsTouchesInView auf NO setzen, sendet das System weiterhin berührungsbezogene Nachrichten für die Gestenberührung, die mit den Nachrichten der Gestenerkennung verschachtelt sind. Die Berührung wird normal beendet, anstatt abgebrochen zu werden (es sei denn, das System bricht die Berührung aus einem anderen Grund ab, z. B. wenn die Home-Taste während der Berührung gedrückt wird).

    
rob mayoff 24.10.2012, 03:50
quelle
3

Aus dem Apple-Entwicklerportal link :

  

cancelsTouchesInView - Wenn ein Gestenerkenner seine Geste erkennt,   Es entblößt die verbleibenden Berührungen dieser Geste aus ihrer Sicht (so   das Fenster liefert sie nicht). Das Fenster bricht das vorher ab   Berührungen mit einer (touchesCancelled: withEvent :) Nachricht. Wenn ein   Gestenerkenner erkennt seine Geste nicht, die Ansicht empfängt   alle berührt in der Multi-Touch-Sequenz.

     

cancelsTouchesInView:

     

Ein boolescher Wert, der beeinflusst, ob Berührungen sind   an eine Ansicht geliefert, wenn eine Geste erkannt wird.

     

@property (nicht atomisch) BOOL cancelsTouchesInView

     

Diskussion

     

Wenn das ist   Eigenschaft ist YES (der Standardwert) und der Empfänger erkennt seine Geste,   Die Berührungen dieser Geste, die noch ausstehen, werden nicht an die   Ansicht und vorher abgegebene Berührungen werden durch a abgebrochen   touchesCancelled: withEvent: Nachricht an die Ansicht gesendet. Wenn eine Geste   Erkenner erkennt seine Geste nicht oder wenn der Wert von diesem   Eigentum ist NEIN, die Aussicht erhält alle Berührungen im Multi-Touch   Sequenz.

    
iDev 24.10.2012 03:38
quelle