/ / Qu'est-ce qu'une définition formelle d'un premier répondant dans iOS? - ios, premier répondant

Qu'est-ce qu'une définition formelle d'un premier répondant sous iOS? - ios, premier répondant

Je comprends qu'un objet de premier répondant est lereçoit un signal de rappel en fonction de l'activité d'entrée, etc. et qu'il le fera remonter dans la chaîne jusqu'à ce qu'un répondeur disposé à le gérer puisse être trouvé.

Mais plus formellement, quelle est la portée de la premièrerépondeur? Par exemple, s'agit-il d'un répondeur à l'échelle de l'application? Il semble que le fait d'être un premier intervenant signifie simplement que cet objet en particulier recevra une notification d'interaction. Un autre intervenant peut-il voler le statut de premier intervenant?

Veuillez m'expliquer ou me diriger vers des informations pertinentes. J'ai "lu l'explication générale de Apple sur ce qu'est un répondeur. Je cherche une explication un peu plus élaborée.

Réponses:

12 pour la réponse № 1

La portée d'un premier intervenant dans iOS est déterminée par la hiérarchie des vues. N'oubliez pas qu'un répondeur fait partie d'une hiérarchie de répondants et est défini dans la documentation d'Apple:

Un répondeur est un objet qui peut répondre à des événements et les gérer. Tous les objets répondeurs sont des instances de classes qui héritent de UIResponder (iOS) ou de NSResponder (OS X).

En pratique, tous les intervenants font partie deune chaîne d'intervenants potentiels menant jusqu'à l'application elle-même. Cela signifie que la portée du répondeur est déterminée par le chemin qu'il faut parcourir pour obtenir un objet capable de gérer une réponse. Si le premier répondant est un élément de l'interface utilisateur, tel qu'un UITextField, votre portée est liée à la portée de ce répondeur.

Dans cette image, la hiérarchie des premiers répondants iOS est affichée à gauche (OS X à droite):

Hiérarchie du premier répondant

Pour répondre à la deuxième partie de la question, oui, les objets peuvent "voler" le statut de premier répondant si un utilisateur interagit avec un élément, par exemple:

  1. L'utilisateur clique sur textField1. C'est maintenant le premier intervenant.
  2. L'utilisateur clique sur textField2. Il a repris le statut de premier répondant de textField1.

... et vous pouvez leur attribuer le statut de premier répondant avec certaines fonctions:

[textField3 becomeFirstResponder]; //This is now the first responder
[textField4 becomeFirstResponder]; //Now textField4 has "stolen" first responder status
[textField4 resignFirstResponder]; //The text field has resigned its first responder status to the next level up

Pour tous ceux qui lisent ceci et qui "n’ont pas consulté la documentation d’Apple à ce sujet, un bon point de départ est l’explication de la hiérarchie des répondeurs trouvée ici: https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/Responder.html

J'espère que ça aide!


10 pour la réponse № 2

C’est une propriété de la fenêtre. La fenêtre n’a en tout temps qu’un premier répondant. Tout répondeur UIR peut demander le statut de premier répondant en étant envoyé becomeFirstResponderet c’est la raison pour laquelle vous pouvez faire en sorte que UITextField devienne "actif" en lui envoyant ce message.