2009-11-22 62 views
1

我一直在爲Mac製作菜單式筆記記錄應用程序。它是用Objective-C和Cocoa編寫的,我正在使用BWToolkit。我的問題是在BWTransparentTableView中獲取keyDown:和mouseDown:事件,它是NSTableView的子類。我只是無法讓它工作。我試過搜索互聯網,有些地方說你必須繼承NSTableView。我已經嘗試過,但仍然無效。我對Objective-C和Cocoa相當陌生,而且我可能只是在做一些不正確的事情。NSTableView keyDown:和mouseDown:

+2

發佈你的子類嘗試的相關部分以及你看到的錯誤(超出「無法正常工作」,即:-))。從那開始最容易。 – 2009-11-22 20:08:14

+1

我試着在名爲MyTableView的類中繼承NSTableView。類所做的唯一的事情就是覆蓋keyDown :,但是keyDown:永遠不會被調用。有沒有其他方法可以在NSTableView中獲取鍵盤和鼠標事件?我真正想要的是允許雙擊表格視圖中的項目以打開它們,並在按下輸入或緩慢雙擊時重命名。 – ausgat 2009-11-22 20:38:45

+0

你想做什麼,你認爲需要重寫'keyDown:'和'mouseDown:'? – 2009-11-23 00:35:04

回答

4

NSTableView中的項目在雙擊緩慢或按下回車鍵時將自動開始編輯。確保表視圖,單元格和數組控制器(如果使用)被標記爲可編輯。

如果您未使用NSArrayController,請確保您的表格視圖有一個委託並且它對tableView:shouldEditTableColumn:row:作出響應。

要處理雙擊,你只需要設置表視圖的doubleAction

- (void)awakeFromNib 
{ 
    [tableView setTarget:self]; 
    [tableView setDoubleAction:@selector(doubleClickInTable:)]; 
} 

- (void)doubleClickInTable:(id)sender 
{ 
    NSInteger rowIndex = [sender selectedRow]; //Use selectedRowIndexes if you're supporting multiple selection 
    //Handle the double click 
} 

注意,這些方法都需要你繼承NSTableView

+0

謝謝!它工作完美。這只是我在文檔中閱讀過,如果單元格是可編輯的,則不會發送doubleAction:。 – ausgat 2009-11-23 01:57:06

+0

爲我完美工作。謝謝! – 2011-11-06 02:26:26