2012-08-26 25 views
0

當用戶點擊狀態欄中的NSStatusitem時,有沒有辦法讓NSPopover顯示?來自NSStatusitem的NSTextField

在我的頭到目前爲止,我有這樣的:

IBOutlet NSStatusItem *statusitem; 

這:

@property (assign) IBOutlet NSPopover *pop; 

下的方法,我有這個:

[[NSImage imageNamed:@"mic.png"]setSize:NSMakeSize(20,20)]; 
statusitem = [[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength]; 
[statusitem setHighlightMode:YES]; 
[statusitem setImage:[NSImage imageNamed:@"mic.png"]]; 
[statusitem setMenu:menu]; 
[statusitem setAction:@selector(pop:)] 

- (void)pop:(id)sender{ 
[[self pop]showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge]; 
} 

有沒有辦法讓這個工作?

回答

1

這非常接近正確。您的statusItem屬性應該保留,而不是IBOutlet,因爲您正在使用代碼創建它。此外,你不能同時擁有狀態項目的菜單和動作 - 如果你有一個菜單,當你點擊狀態項目時,它將被打開,而不是觸發你的動作方法。所以,如果你做了這些改變,並且你在IB中有popover設置,這應該可以工作。

+0

謝謝我得到它的工作,唯一的問題是它不會消失,當我點擊或再次statusitem有無論如何解決這個問題? – haseo98

+0

是的,在IB中,popover的Behavior屬性設置爲transient。 – rdelmar

+0

謝謝,我注意到的另一個錯誤是我無法讓NSTextfield專注於 – haseo98