2013-10-23 62 views
2

我有一個應用程序與2獨立NSWindow加載。如何讓NSView立即獲得焦點/第一響應者接受mouseDown事件?

每個窗口都有一個小表,其中有兩個項目。

這裏的問題我不能似乎解決 - >

如果窗口#1主/專注,我可以點擊通常表中的各行。但是,如果我想單擊窗口#2中的表中的行,我必須單擊表格兩次。第一次單擊以獲得活動/聚焦的Window#2,最後第二次單擊以實際選擇該行。

我怎樣才能得到在NSTableViews中只有一個點擊行(無論他們的窗口是否在焦點或不)?

回答

4

我子類的NSTableView的。

-(BOOL)acceptsFirstMouse:(NSEvent *)theEvent { 
    return YES; 
} 
0

問題是當你的第一個窗口處於活動狀態時,因爲它是第一響應者,所以顯然你的tableview將是window1的下一個響應者,直到你選擇它。但對於第二個窗口,您的第一個響應者將是window2。所以你必須在表上雙擊兩次,因爲第一響應者正在設置爲window2,並且它正在設置到表2以創建下一個響應者。如果你想單擊並選擇window2的表格,那麼你可以通過綁定或編程來完成。

+0

但是如何?那就是我不知道的...... –

+0

[[self window] setInitialFirstResponder:(NSView *)tableView2]; [[self window] makeFirstResponder:(NSView *)tableView2];試試這個樣子 –

+0

您是否試過這段代碼?你究竟把它放在哪裏?設置第一響應似乎沒有工作..當我仍然必須點擊表格行兩次,而不是一次.. –

3

創建NSTableView的的一個IBOutlet爲:

IBOutlet NSTableView* yourTable; 

綁定到你的表。

然後使用:

[window2 makeFirstResponder: yourTable]; 
+0

它爲我的textView工作。希望它也適合你。 – Neha

+0

你有2個獨立的窗戶嗎?你說你只需要點擊一次表格視圖行? –

+0

是的,我有兩個獨立的窗口,並在一個NSTextView。如果我不使用上述方法,NSTextView將重點關注2次點擊。但是在成爲第一響應者之後,它將重點放在一次點擊上。 – Neha

相關問題