Systemlogik für Ersthelfer verstehen

8

Ich bin verwirrt über mehrere First-Responder-Punkte:

  1. Wenn ich - becomeFirstResponder aufruft, ruft System% – canBecomeFirstResponder zuerst auf? Warum?
  2. Warum gibt es - becomeFirstResponder und – canBecomeFirstResponder ? In welchen Situationen können sie unterschiedliche Werte zurückgeben?
  3. Muss die Anwendung zu jeder Zeit einen Ersthelfer haben? Wenn ja, was passiert, wenn ich – resignFirstResponder für ein Objekt aufruft? Wird UIApplication sofort zum Ersthelfer oder wird dieses "Token" an einem bestimmten Punkt in der Responderkette ausgelöst? Kann ich - becomeFirstResponder auf UIApplication -Objekt aufrufen, wenn ich diesen Pilgerstein loswerden möchte?
  4. ...

Bitte erklären Sie mir, wie das System seinen Ersthelfer verwaltet. Was geschieht unter der Haube, wenn ein Objekt zum Ersthelfer wird, was wenn Ersthelfer zurücktritt. Welche Anrufe macht das System ... Danke!

    
user500 07.09.2011, 15:02
quelle

1 Antwort

6
  1. Die Standardimplementierung von becomeFirstResponder ruft canBecomeFirstResponder auf. Dies liegt daran, dass ein Responder, der NO von canBecomeFirstResponder zurückgibt, nicht zum ersten Responder wird.
  2. becomeFirstResponder wird den Empfänger tatsächlich zum Ersthelfer machen, wenn es erfolgreich ist. canBecomeFirstResponder prüft nur, ob der Empfänger bereit ist, der erste Responder zu sein, ohne tatsächlich etwas zu ändern. Es ist möglich, dass becomeFirstResponder fehlschlagen kann, wenn der aktuelle Ersthelfer den Rücktritt verweigert. Es kann andere Situationen geben, in denen becomeFirstResponder ebenfalls fehlschlagen kann.
  3. In Ihrem Code muss nichts vorhanden sein, das den Status des Erstbeantwortenden hat. Gemessen an der privaten UIResponder-Methode firstResponder weist das System in diesem Fall keinen bestimmten Standardwert zu.

Im Grunde wird, wenn etwas zum Ersthelfer werden möchte, der derzeitige Ersthelfer (falls vorhanden) zum Rücktritt aufgefordert, und dann wird das neue Objekt zum Ersthelfer. Dies kann dazu führen, dass das System die Bildschirmtastatur anzeigt oder eine andere Aktion ausführt. Wenn der Ersthelfer zurücktritt, kann dies in ähnlicher Weise dazu führen, dass das System die Bildschirmtastatur versteckt oder eine andere Aktion ausführt.

Wenn ein Nicht-Berührungsereignis eintritt, wird es zuerst an das UIWindow geliefert. Das UIWindow liefert es an den Ersthelfer. Die Dokumentation scheint nicht anzugeben, ob UIWindow versucht, das Ereignis selbst zu behandeln (und es wie gewöhnlich an UIApplication weiterleitet, wenn es nicht selbst damit umgeht) oder das Ereignis einfach ignoriert, wenn es keinen Ersthelfer gibt.

>

Siehe die Dokumentation für Details.

    
Anomie 07.09.2011 15:41
quelle