NSTextFeld Delegierte Benachrichtigungen - wie bekomme ich Text?

8

Ich habe versucht, Xcode zu lernen, aber ich bin verwirrt darüber, wie man NSTextField geändert hat. Im Wesentlichen habe ich eine NSTextField und eine Schaltfläche. Wenn Sie auf die Schaltfläche klicken, wird der Text in das Feld eingefügt. Ich möchte jedoch in der Lage sein, den Text des Feldes zu erhalten, ohne das Textfeld "Aktion: Senden am Ende der Bearbeitung" zu verwenden. Das heißt, ich möchte in der Lage sein, Text einzugeben und sofort auf die Schaltfläche zu drücken, ohne die Eingabetaste oder die Tabulatur außerhalb des Textfelds zu drücken. Es sieht so aus, als würde man einen Delegaten für mein NSTextField setzen, der auf

antwortet %Vor%

Aber ich verstehe nicht, wie man den eingegebenen Text bekommt. Ich nehme an, dass es etwas mit

zu tun hat %Vor%

Aber ich habe wirklich keine Ahnung, wohin ich von dort gehen soll.

    
Daniel 11.05.2011, 19:03
quelle

3 Antworten

10

Sie sind auf dem richtigen Weg! Das Objekt, das Sie aus dem Benutzerinformationswörterbuch der Benachrichtigung erhalten, ist der Feld-Editor , das ist einfach ein NSTextView , das die Texteingabe im Namen des Textfelds verarbeitet.

Sobald Sie dieses Objekt haben, müssen Sie es nur nach seinem textStorage fragen, was ein NSTextStorage * Objekt mit dem Text. Dieses Objekt wiederum hat sein string , was ein einfaches altes NSString ist, das nur die Zeichen enthält.

%Vor%

* Eine Unterklasse von NSAttributedString , bei der es sich um ein Objekt handelt, das eine Zeichenfolge und zugehörige "Attribute" wie Farbe, Schriftart und Unterstreichung enthält.

    
Josh Caswell 11.05.2011, 19:53
quelle
2

Lesen Sie einfach in Ihrer Schaltflächenaktionsmethode den aktuellen Zeichenfolgenwert in das Textfeld:

%Vor%     
Darren 11.05.2011 19:38
quelle
0

Wenn Sie nur ein einzelnes Textfeld bearbeiten, ist das möglicherweise einfacher:

%Vor%

Ich ignoriere alle komplizierten Details von NSText und whatnot und verwende einfach die Einfachheit der gesendeten Benachrichtigung und die Einfachheit, den Zeichenfolgenwert aus einem Textfeld zu erhalten.

    
ArtOfWarfare 25.01.2014 16:49
quelle