2011-09-07 18 views
8

jestem zagubiony severals pierwsze punkty odpowiadające na:Zrozumienie logiczny system pierwszego odpowiadającego

  1. Jeśli zadzwonię - becomeFirstResponder, czy wywołanie systemowe – canBecomeFirstResponder pierwszy? Czemu?
  2. Dlaczego są oba - becomeFirstResponder i – canBecomeFirstResponder? W jakich sytuacjach mogą zwracać różne wartości?
  3. Czy aplikacja musi mieć pierwszą odpowiedź w każdym czasie? Jeśli tak, co się dzieje, gdy zadzwonię pod numer – resignFirstResponder na jakiś obiekt? Czy UIApplication natychmiast staje się pierwszym respondentem, czy jest to "token" wyrzucony w jakimś punkcie łańcucha respondentów? Czy mogę zadzwonić pod numer - becomeFirstResponder na obiekcie UIApplication, gdy chcę pozbyć się tego tokena pielgrzyma?
  4. ...

Proszę ktoś mi wyjaśnić, w jaki sposób system zarządza swoją pierwszą odpowiedź. Co dzieje się pod maską, gdy jakiś obiekt staje się pierwszym reagantem, a co przy pierwszej odpowiedzi? Jakie połączenia wykonuje system ... Dziękujemy!

Odpowiedz

6
  1. Domyślna implementacja becomeFirstResponder wywołuje canBecomeFirstResponder. Wynika to z faktu, że responder, który zwraca komunikat NIE z canBecomeFirstResponder, nie powinien zostać pierwszym respondentem.
  2. becomeFirstResponder spowoduje, że odbiornik faktycznie będzie pierwszą odpowiedzią, jeśli się powiedzie. canBecomeFirstResponder sprawdza tylko, czy odbiorca chce być pierwszym respondentem, nie zmieniając niczego. Możliwe, że becomeFirstResponder może zawieść, jeśli obecny pierwszy responder odmówi złożenia rezygnacji. Mogą być również inne sytuacje, w których becomeFirstResponder może również zawieść.
  3. Nie musi być nic w kodzie, który ma status pierwszego ratownika. Sądząc po prywatnej metodzie UIResponder firstResponder, system nie przypisuje w tym przypadku żadnych domyślnych wartości domyślnych.

Zasadniczo, gdy coś chce zostać pierwszym responderem, aktualny pierwszy responder (jeśli jest), zostaje poproszony o zrezygnowanie, a następnie nowy obiekt staje się pierwszym respondentem. Może to spowodować, że system wyświetli klawiaturę ekranową lub podejmie inne działanie. Gdy pierwszy reagujący zrezygnuje, może to spowodować, że system ukryje klawiaturę ekranową lub podejmie inną akcję.

Po dostarczeniu zdarzenia bezdotykowego jest ono najpierw dostarczane do interfejsu użytkownika interfejsu użytkownika. UIWindow dostarcza je do pierwszego respondera. Dokumentacja nie wydaje się określać, czy UIWindow próbuje obsługiwać samego zdarzenia (i przekazuje je do UIApplication jak zwykle, jeśli nie obsługuje go samodzielnie) lub po prostu ignoruje zdarzenie, jeśli nie ma pierwszej odpowiedzi.

Aby uzyskać szczegółowe informacje, patrz: the documentation.