Drag and Drop with NSStatusItem

后端 未结 2 1522
梦毁少年i
梦毁少年i 2020-12-07 15:58

I\'m trying to write an application that allows the user to drag files from the Finder and drop them onto an NSStatusItem. So far, I\'ve created a custom view

2条回答
  •  广开言路
    2020-12-07 16:35

    Since Yosemite, the method for setting a view on NSStatusItem is deprecated but fortunately there is a much nicer way using the new NSStatusItemButton property on NSStatusItem:

    - (void)applicationDidFinishLaunching: (NSNotification *)notification {
        NSImage *icon = [NSImage imageNamed:@"iconName"];
        //This is the only way to be compatible to all ~30 menu styles (e.g. dark mode) available in Yosemite
        [normalImage setTemplate:YES];
        statusItem.button.image = normalImage;
    
        // register with an array of types you'd like to accept
        [statusItem.button.window registerForDraggedTypes:@[NSFilenamesPboardType]];
        statusItem.button.window.delegate = self;
    

    }

    - (NSDragOperation)draggingEntered:(id)sender {
        return NSDragOperationCopy;
    }
    
    - (BOOL)performDragOperation:(id)sender {
      //drag handling logic
    }
    

    Please be aware that the button property is only available starting in 10.10 and you might have to keep your old solution if you support 10.9 Mavericks or below.

提交回复
热议问题