2010-08-04 74 views
2

默認情況下,雙擊觸發器在NSTableView中重命名。NSTableView雙擊/重命名

我怎樣才能讓雙擊而不是觸發我自己的自定義代碼(如打開雙擊文件)?

還有:如何讓重命名像在Finder中,您首先單擊,然後再次單擊並快速移動鼠標指針?這就是在Finder中觸發重命名的方式。我想在NSTableView中那樣。

+0

你看過NSBrowser嗎?它可能會更好地滿足您的需求,因爲它是Finder使用的。 – theMikeSwan 2010-08-04 21:13:10

+0

NS瀏覽器的雙重動作和點擊編輯功能與表格視圖相同(這是OP詢問的內容)。 – 2010-08-04 22:29:34

回答

7

根據文檔,NSTableView有-setDoubleAction:。單擊一次選擇一行,然後單擊要編輯的文本單元格的行爲就像Finder默認情況下(並且這與Finder都沒有任何關係,請快速移動指針 - 嘗試它)。

點擊一次選擇,然後再次點擊開始重命名。點擊兩次(足夠快是雙擊),並處理「雙重」操作。

+1

我想補充一些信息,如果你點擊兩次文字,它將進入編輯模式,而不是執行你的自定義動作。 爲了執行您的操作並阻止進入編輯模式,單元格也應該被設置爲不可編輯,如@JWWalker所寫。 – xyz 2012-02-25 21:09:57

+0

Xcode表視圖連接檢查器有一個等效的已發送操作:「doubleAction」。控制 - 從它拖動到你的控制器(或到它的頭文件來創建操作方法) – 2018-01-30 19:32:50

+0

@PaulCollins整潔!我想知道這是什麼時候加入的。很久以前,我知道它根本不在IB中。 – 2018-02-06 18:04:57

2

您必須使文本單元格不可編輯以便您的表格視圖獲得雙擊操作消息。

+0

不真實。 Growl的BeepHammer示例應用程序將列和單元格都設置爲可編輯,雙擊工作正常。 – 2010-08-05 05:01:04

+0

我不知道那個例子,但是' - [NSTableView setDoubleAction:]'的文檔說「如果雙擊單元格是可編輯的,則不會發送此消息,而是單元格被編輯。」 – JWWalker 2010-08-05 05:09:39

+0

你是對的,這是從文檔中可以看出的。但似乎文檔在這種情況下是錯誤的。看起來像這個工程,即使單元格是可編輯的。 – Enchilada 2010-08-24 05:58:21