Ich versuche ein eigenes Menü (in einem
Alles anzeigen
Wenn ich den Menüeitrag anklicke, wird
Wie kann ich ein Menü schließen?
NSStatusItem
) zu bauen, dessen Einträge ähnlich wie die des Standardmenüs aussehen. Dafür habe ich die Klassen MenuItem
von NSMenuItem
und MenuItemView
von NSView
abgeleitet. Jeder Menüeintrag hat jeweils einen MenuItemView
als Outlet view
gesetzt. Die Anzeige funktioniert bereits ganz gut, aber die Verarbeitung der Mausklicks noch nicht. Das ist der Code des Views:C-Quellcode
- @implementation MenuItemView
- - (BOOL)acceptsFirstResponder {
- return YES;
- }
- - (void)drawRect:(NSRect)inDirtyRect {
- MenuItem *theMenuItem = (MenuItem *)self.menuItem;
- if(self.menuItem.isHighlighted) {
- [theMenuItem.highlightColor setFill];
- theMenuItem.textColor = [NSColor selectedMenuItemTextColor];
- }
- else {
- [[NSColor clearColor] setFill];
- theMenuItem.textColor = [NSColor labelColor];
- }
- NSRectFill(inDirtyRect);
- }
- - (void)mouseUp:(NSEvent *)inEvent {
- MenuItem *theMenuItem = (MenuItem *)self.menuItem;
- [NSApp sendAction:theMenuItem.action to:theMenuItem.target from:theMenuItem];
- [theMenuItem.menu cancelTracking];
- }
- @end
Wenn ich den Menüeitrag anklicke, wird
mouseUp:
zwar ausgeführt, cancelTracking
führt aber nicht dazu, das Menü zu schließen. Ich habe mir schon mehrere Apple-Beispiele angesehen und nach dem Problem im Internet gesucht. Bisher erfolglos.Wie kann ich ein Menü schließen?
„Meine Komplikation hatte eine Komplikation.“