2010-07-09 21 views
9

Ich füge dynamisch ein NSTextField zu einem Fenster hinzu und ich habe Probleme mit dem Rendering. Ich stelle die Hintergrundfarbe ein, um schwarz zu sein und die Textfarbe, um weiß zu sein. Diese beiden funktionieren, aber ihr scheint ein Rechteck zu sein, das Teil des Textes ist, der immer weiß ist. Weiß jemand, was ich falsch machen könnte? Wie kann ich den weißen Hintergrund entfernen, der gerade um den Text herum ist? Code ist wie folgt:NSTextField Farbprobleme

//Create rectangle to size text field 

NSRect textFieldRect = NSMakeRect(300, 300, 300, 54); 

//Instantiate text field and set defaults 
NSTextField* textField = [[NSTextField alloc] initWithFrame:textFieldRect]; 

[textField setFont:[NSFont fontWithName:@"Arial" size:48]]; 

[textField setTextColor:[NSColor whiteColor]]; 

[textField setStringValue:@"Some Text"]; 

[textField setBackgroundColor:[NSColor blackColor]]; 

[textField setDrawsBackground:YES]; 

[textField setBordered:NO]; 

[[window contentView] addSubview:textField]; 

Antwort

11

Ich habe Ihren Code auf Mac OS X 10.6.4 versucht.

Innerhalb der Anwendung delegieren:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSRect textFieldRect = NSMakeRect(300, 300, 300, 54); 
    NSTextField* textField = [[NSTextField alloc] initWithFrame:textFieldRect]; 
    [textField setFont:[NSFont fontWithName:@"Arial" size:48]]; 
    [textField setTextColor:[NSColor whiteColor]]; 
    [textField setStringValue:@"Some Text"]; 
    [textField setBackgroundColor:[NSColor blackColor]]; 
    [textField setDrawsBackground:YES]; 
    [textField setBordered:NO]; 
    [[window contentView] addSubview:textField]; 
} 

Und das ist das Ergebnis

alt text http://www.freeimagehosting.net/uploads/26c04b6b64.png

Ich kann keinen weißen Kasten sehen.
Vielleicht verwenden Sie ein anderes Betriebssystem.
Oder vielleicht haben Sie andere Ansichten übereinander, die den seltsamen Effekt verursachen, über den Sie sprechen.

+0

Danke für die schnelle Antwort Florin, vielleicht etwas, das wichtig ist, ich füge das NSTextField zu einem dynamisch erstellten NSWindow hinzu, das einen schwarzen Hintergrund hat. Ich bin mir nicht sicher, ob das einen Unterschied macht, aber wenn man bedenkt, dass Sie nicht das selbe Problem haben wie ich. –

+0

Verbindung ist kaputt. Warum hast du es nicht in SO hochgeladen? – SpaceDog

0

Ok,

Das Geheimnis ist teilweise gelöst. In Verbindung mit meinem NSTextField stelle ich auch einige NSApplicationPresentationOptions ein, um die Anwendung in den Kiosk-Modus zu versetzen. Es scheint, dass etwas damit das Problem verursacht, das ich sehe. Wenn ich die PresentationOptions nicht einstelle, wird das NSTextField genau so angezeigt, wie ich es möchte. Ich werde herausfinden, welche spezifische PresentationOption dafür verantwortlich ist und hier posten.

+0

Es scheint, dass der Anruf an [NSApp setPresentationOptions:] ist schuld. Selbst wenn ich es als Standard setze, wird der Text einen weißen Hintergrund haben. Hmm ..... –

2

Versuchen Sie die Einstellung refusesFirstResponder = TRUE Eigenschaft Ihres NSTextField-Objekts. Ich bin auf Verhalten gestoßen, das Sie in 10.7 beschrieben haben, in 10.6 funktioniert alles wie erwartet.

+0

macht keinen Unterschied für mich auf Sierra – SpaceDog