2009-07-31 54 views
0

過去幾天我一直在嘗試這種方式,但無法弄清楚。我的NStableview上沒有檢測到鼠標事件+ cocoa

我有一個應用程序,它有一個NSOutlineView和一個NSTableView。 Outlineview將輸入一個路徑並以樹結構的形式顯示它的子內容。因此,當用戶點擊外部視圖中的特定文件夾時,該文件夾的內容應該以列表的形式顯示在表格視圖中,並且其屬性也以列表形式顯示。

現在我能夠在視圖中顯示相應的內容,並使用代表和通知來完成outlineview和tableview之間的交互。

現在我的問題是我想要在兩個視圖中都檢測到鼠標事件,這樣我可以通過啓用單擊來選擇,雙擊以啓用打開文件/文件夾並控制+單擊啓用上下文彈出式菜單。但奇怪的是沒有檢測到鼠標事件。

我的應用程序的設計非常簡單,每個表和大綱視圖都有自己的視圖和控制器類以及它們之間使用通知進行交互。請你能建議我哪裏出錯了?

我知道我可以單擊並雙擊使用setAction和DoubleAction方法的表視圖,但我無法控制點擊工作。我想知道什麼是錯用我的應用程序設計自己的看法非是檢測鼠標事件:(

感謝

回答

0

你可以控制是否按有:

if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask){ 
    //control was pressed at the time the event was posted 
} 

或者您可能希望要繼承NSTableView/NSOutlineView並覆蓋mouseDown:直接獲取事件

此外,如果您的操作和doubleAction不起作用,請驗證目標/操作是否正確:

NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong"); 
相關問題