2009-05-29 14 views
1

Ich habe eine benutzerdefinierte Unterklasse von NSCell mit einer NSImageCell, einige NSTextFieldCells und eine NSPopUpButtonCell erstellt.NSPopUpButtonCell in benutzerdefinierten Zelle wird nicht angezeigt, wenn geklickt wird

Ich Initialisierung der Pop-up-Zelle mit:

myPopUpCell = [[NSPopUpButtonCell alloc] init]; 
    [myPopUpCell setBordered:NO]; 
    [myPopUpCell setAutoenablesItems:NO]; 
    [myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]]; 

Und es in drawInteriorWithFrame:inView:

Alles Zeichnung scheint außer dass große, zu arbeiten, wenn auf dem Pop-up-Zelle klicken während meine Anwendung läuft die Zelle erscheint nicht. Irgendwelche Vorschläge über was könnte falsch sein?

+0

vielleicht nur ein Ausschneiden und Einfügen Fehler, aber die ArrayWithObjects-Liste muss nicht beendet werden. z.B. [myPopUpCell addItemsWithTitles: [NSArray arrayWithObjects: @ "Element1", @ "Element2", @ "Element3", null]]; – Abizern

Antwort

5

Das Zeichnen der Popup-Schaltfläche Zelle in drawInteriorWithFrame:inView: wird genau das tun; zeichne es, aber sonst nichts. Die Verarbeitung von Klickereignissen steht nicht im Zusammenhang mit der Zeichnung. Sie müssen also in Ihrer benutzerdefinierten Zelle etwas arbeiten, um Mausereignisse zu interpretieren. Wenn sie sich in dem Rahmen befinden, den Sie für die Popup-Schaltfläche verwenden, geben Sie sie weiter zu der Knopfzelle. Beginnen Sie mit der Unterklassierung der Methoden, die in den NSCell-Dokumenten unter dem Verfolgen der Maus aufgeführt sind, z. B. –trackMouse:inRect:ofView:untilMouseUp:, und Sie sollten in der Lage sein, herauszufinden, was erforderlich ist, damit die Schaltflächenzelle ordnungsgemäß funktioniert.

Je nachdem, was Sie tun, finden Sie es tatsächlich einfacher, die Titelfolge selbst zu zeichnen, und verwenden Sie einfach NSMenu +popUpContextMenu:withEvent:forView:.