Ich bin verwirrt über mehrere First-Responder-Punkte:
- becomeFirstResponder
aufruft, ruft System% – canBecomeFirstResponder
zuerst auf? Warum? - becomeFirstResponder
und – canBecomeFirstResponder
? In welchen Situationen können sie unterschiedliche Werte zurückgeben? – 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? 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!
becomeFirstResponder
ruft canBecomeFirstResponder
auf. Dies liegt daran, dass ein Responder, der NO von canBecomeFirstResponder
zurückgibt, nicht zum ersten Responder wird. 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. 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.
Tags und Links objective-c ios cocoa-touch first-responder uiresponder