Ich weiß, wie ich dies mit NSTextView tun würde, aber NSTextField scheint keine Möglichkeit zum Zugriff auf die dahinter, so kann ich mich nicht festlegen als Delegierter und Prozess -textStorageDidProcessEditing:
.Validieren Sie eine Benutzerschnittstelle (NSButton) als Benutzertyp in NSTextField
Ich habe eine NSTextField
als Teil eines Blattes. Wenn das Textfeld zu irgendeinem Zeitpunkt leer ist, sollte die Schaltfläche OK deaktiviert werden, bis eine Eingabe bereitgestellt wird. Das ist im Grunde alles, was ich tun möchte, und ich bin mir sicher, dass es eine wirklich einfache Möglichkeit gibt, dies zu tun?
Ich habe versucht:
[[[filenameInput cell] textStorage] setDelegate:self];
Denken, dass NSTextFieldCell
die Textspeicher zur Verfügung stellen würde (vor allem seit Xcode freundlich es für mich-Auto fertig gestellt) und dann natürlich hätte meine Validierung über die delegierte Methode:
-(void)textStorageDidProcessEditing:(NSNotification *)notification {
BOOL allowSubmit = ([[filenameInput stringValue] length] > 0)
&& (([relativePathSwitch state] == NSOnState) || ([[localPathInput stringValue] length] > 0));
[createButton setEnabled:allowSubmit];
}
Dies kompiliert, verursacht aber einen Laufzeitfehler, da NSTextFieldCell
nicht auf textStorage
reagiert.
Was ist das Standardmuster, dem ich hier folgen sollte? Dies muss einer jener „jeden Tag“ Aufgaben für Cocoa Devs sein, denke ich :)
Danke, ich werde mir das ansehen. Klingt wie eine skalierbare Lösung. Es gibt einige Abhängigkeiten zwischen Feldern, aber ich gehe davon aus, dass dies berücksichtigt wird. Ich arbeite jetzt gerade an etwas anderem, aber ich werde es versuchen, sobald ich fertig bin und dies akzeptiere. – d11wtq