2010-12-22 9 views
0

ich folgendes bin mit einem NSPopupButton programmatisch zu erstellen:NSPopUpButton Text überlappt Menübild

... 
    NSPopUpButton *accessoryView = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 24) pullsDown:YES]; 

    NSFont *aFont = [NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]; 

    [accessoryView setBezelStyle:NSRecessedBezelStyle]; 
    [accessoryView setFont:aFont]; 
    [accessoryView setShowsBorderOnlyWhileMouseInside:YES]; 
    [accessoryView setAutoresizingMask:NSViewMaxXMargin | NSViewMinYMargin]; 

    NSArray *popupItems = [[NSArray alloc] initWithObjects:@"Your Account", @"Sign In", @"Create Account", nil]; 

    [accessoryView addItemsWithTitles:popupItems]; 
... 

Nun, wenn ich die NSPopUpButton meiner Sicht hinzufügen, ich am Ende mit dem Text der Taste das Symbol überlappend für die verwendete Dropdown-Menü. Ich habe das vorher gesehen, wenn ich NSControl benutze: setAlignment, aber ich benutze das hier nicht. Hier ist die Ausgabe:

NSPopUpButton overlaps menu icon

Kann jemand sehen, was ich falsch mache?

Achten Sie darauf,

Jeremy

Antwort

0

Es passiert einfach so ist dies eine einfache Lösung ist. (! Dank Beelsebob auf irc.freenode.net) Grundsätzlich müssen Sie den folgenden Code haben:

[[accessoryView cell] setArrowPosition:NSPopUpArrowAtBottom]; 

dort irgendwo. (Ich habe es direkt unter der Zeile hinzugefügt, um die Menüelemente hinzuzufügen.) Ich hatte die API-Dokumentation zu diesem Aufruf einige Male zuvor gelesen, da ich denselben Aufruf mit dem Wert NSPopUpNoArrow implementiert hatte, um den Pfeil als vorläufigen Fix zu entfernen. aber es machte nicht klar, dass der richtige Wert, der oben verwendet wird, tun würde, was er tut. Problem gelöst.