2011-01-10 11 views
16

Ich lese über Responder-Ketten, und im Grunde lese ich darüber, wie die Ereignisse von der UI über die Responder-Kette weitergegeben werden, wie man mit ihnen umgeht und wie man sie weitergibt. Ich habe auch -becomeFirstResponder und -resignFirstResponder benutzt, aber ich benutzte diese nur für grundlegende Aufgaben, wie das Anzeigen der Tastatur auf iOS und die Handhabung von Shake-Events.Wie kann "First Responder" in einer XIB-Datei verwendet werden?

Was ich gerne wissen würde ist, wie kann ich das Proxy-Objekt "First Responder" in der MainWindow.xib, die Xcode generiert. Ich sehe einige empfangene Aktionen und sehe auch, dass ich Aktionen auf der Registerkarte "Identity Inspector" erstellen kann.

Also meine Frage ist: Wie kann ich diese Aktionen verwenden, und Wann sollte ich dieses Proxy-Objekt in IB?

Interface Builder Screenshot

Vielen Dank im Voraus.

+0

Eigentlich was ist das Proxy-Objekt an erster Stelle? Ein Knopf? Was? –

Antwort

3

Sie würden First Responder als Ziel einer Aktion verwenden, wenn die Aktion an den Erstbeantworter gesendet werden soll, unabhängig davon, welches Objekt gerade zum Zeitpunkt des Sendens der Aktion vorhanden ist.

In Desktop Cocoa ist eine Nachricht für den First Responder in Wirklichkeit eine nil gezielte Aktion - kein Ziel wird implizit als der erste mögliche Responder, der First Responder, verstanden.

Oft sind textuelle Aktionen an den First Responder gerichtet. Sie möchten, dass Tastendrucke an das Textfeld gesendet werden, das den Fokus hat, aber das Textfeld mit Fokus ändert sich über die Lebensdauer der Ansicht und der Anwendung. Sie könnten die Aktion jedes Mal manuell neu ausrichten, wenn ein Textfeld den Fokus erhält, aber dank NSResponder müssen Sie sich nicht darum kümmern - das ist alles für Sie erledigt.

+1

Danke für die Antwort Jeremy. Es scheint auf dem iPhone gibt es keine große Verwendung für dieses Feature (oder zumindest sehe ich keine Verwendung bis jetzt) ​​... – Moszi

+0

Was meinst du Objekt, das "passiert" sein? Objekte befinden sich zu dem Zeitpunkt, zu dem die Aktion gesendet wird. Es gibt viele Objekte, wenn eine Aktion gesendet wird. Welcher? –

+0

@JimThio Der Ersthelfer zu dem Zeitpunkt, zu dem die Aktion gesendet wird. Es kann viele Objekte geben, aber es kann immer nur einen ersten Responder in einem Fenster geben. –

7

Die Zuweisung einer Aktion zum First-Responder-Objekt entspricht dem programmatischen Hinzufügen einer Aktion zu einem Steuerelement mit einem Nil-Ziel. Wenn die Aktion ausgelöst wird, durchläuft die Anwendung die Responder-Kette und sendet die Aktion an den ersten Responder, der sie annimmt. Auf dem Mac wird es häufig zum automatischen Senden von Menübefehlen an das aktuelle Fenster oder Dokument verwendet. Sie sollten es verwenden, wenn Sie mehrere Objekte haben, denen Sie mit derselben Schaltfläche Nachrichten senden möchten.

+0

danke für die Antwort! – Moszi

+0

Was ist ein Steuerelement mit Null Ziel? Ich dachte, dass jede Kontrolle abhängig von den Ereignissen viele Ziele hat. –

+0

@JimThio Sie haben das falsch analysiert. Es war das Hinzufügen einer Aktion, bei der kein Ziel gesteuert wird, und nicht das Hinzufügen einer Aktion zu einem Steuerelement ohne Ziel."Das Ziel wird pro Aktion festgelegt, nicht pro Kontrolle. –

Verwandte Themen