アイテムをドラッグできるステータスアイテムが必要だったのでカスタムビュークラスを作成しました。ここでNSStatusItemのカスタムNSViewクラス内のNSMenuがステータスバーの下部に表示されない
は、ビューの定義です:私のApplicationDelegate.mで
@interface DragStatusView : NSImageView <NSMenuDelegate>{
BOOL highlight;
}
@end
私はNSStatusItemをインスタンス化し、そして私のDragStatusViewのインスタンス。 DragStatusViewでイメージを設定し、そのメニューをいくつかのNSMenuItemを含むNSMenuのインスタンスに設定します。ここで
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
// Install icon into the menu bar
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
NSImage *statusImage = [NSImage imageNamed:@"Status"];
[statusItem setImage:statusImage];
[menuItem setTitle:NSLocalizedString(@"Special Status", @"imgur menu item text")];
CGFloat itemHeight = [[NSStatusBar systemStatusBar] thickness];
NSRect itemRect = NSMakeRect(0.0, 0.0, NSSquareStatusItemLength, itemHeight);
DragStatusView* dragView = [[DragStatusView alloc] initWithFrame:itemRect];
[dragView retain];
[dragView setImage:statusImage];
[dragView setMenu:menu];
[statusItem setHighlightMode:YES];
[statusItem setView:dragView];
}
がポップアップするメニューをトリガーDragStatusViewコントローラのメソッドです:あなたは、ステータス項目をクリックすると
- (void)mouseDown:(NSEvent *)event {
[[[NSApp delegate] statusItem] popUpStatusItemMenu:[self menu]]; // or another method that returns a menu
}
このほとんどが作品、しかしメニューが高すぎると表示されます。それがクリックした後、どのように見えるかhttp://imgur.com/fpJcd,quS3c#1
:それはクリックする前にどのように見えるか
http://imgur.com/fpJcd,quS3c#0(メニューは画面の上部に表示されます - ああ!)
どのようにメニューが表示さで作ることができますステータスバーの下部?
ありがとうございます!
リンクが機能していません。あなたのコードに別のリンクを教えてください。 –
ヘッドアップに感謝、更新されたリンク – ashgromnies