我創建了一個自定義視圖類,因爲我想有一個狀態項目,你可以拖動項目。NSMenu內部NSStatusItem自定義NSView類不出現在狀態欄底部
這裏的視圖的定義:
@interface DragStatusView : NSImageView <NSMenuDelegate>{
BOOL highlight;
}
@end
在我ApplicationDelegate.m我實例化一個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(!菜單出現在屏幕的頂部 - 啊)
我怎樣才能使菜單出現在狀態欄底部?
謝謝!
鏈接無法正常工作。你能否給我們另一個鏈接代碼。 – 2012-12-06 19:44:32
感謝您的領導,更新鏈接 – ashgromnies 2012-12-07 23:33:23