我使用Apple的示例「Outline View」作爲文件瀏覽器。我有一個DataSource & FileSystemItem就像Apple寫的一樣。我無法點擊並拖動文件名或文件夾名稱。當我點擊時,selectedRow變成藍色。如我所願,沒有任何反應。如果我按住藍線滾動瀏覽文件列表,則移動。NSOutlineView不可拖動,爲什麼?
我已經通過蘋果公司的「拖拽N拖放大綱視圖」代碼,它不是我所期待的。我不想重新排序這些文件,並從OutlineView中拖動它們。我想拖一個文件名(最終它的路徑)到NSTextfield。我一直無法讓NSOutlineView註冊拖動操作。
我子類NSOutlineView和嘗試:
- (void)awakeFromNib {
[_outlineView registerForDraggedTypes:[NSArray arrayWithObjects:LOCAL_REORDER_PASTEBOARD_TYPE, NSStringPboardType, NSFilenamesPboardType, nil]];
[_outlineView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES];
}
以及 - (NSDragOperation),draggingEntered, - (空)registerForDraggedTypes,等等
我沒有麻煩從拖動文本一個NSScrollView到這個NSTextField沒有任何特殊的代碼。顯然NSOutlineView不會繼承NSScrollView的本地拖拽能力?
那麼如何獲得一個NSOutlineView來允許我拖動。同樣,蘋果公司的DragNDropOutlineView比我想要的要多,不做我想做的事,並沒有幫助我弄清楚如何獲得這種拖拽能力。
我已經通過DragNDropOutlineView.m,它有「 - (void)outlineView:(NSOutlineView *)outlineView draggingSession:(NSDraggingSession *)sessio n willBeginAtPoint:(NSPoint)screenPoint forItems:(NSArray *)draggedItems {「在您點擊並按住時被調用。我有這個在我的代碼,當我點擊並按住它不會被調用。所以有些東西是不正確的。我知道我的awakeFromNib被調用,但似乎沒有其他東西被調用。我錯過了什麼? – 2012-08-05 20:34:00
當我點擊行時,這個方法被調用: - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {return(item == nil)? @「/」:(id)[item relativePath]; } - 我相信這是重寫任何拖動過程。所以問題是,如何添加拖動並使此方法有效? – 2012-08-05 20:47:37
僅供參考,我註釋了上面的方法,並且我仍然有選擇的行爲,當鼠標按鈕關閉時,藍色突出顯示簡單地跟隨我的光標。所以也許它不會覆蓋拖動。有些東西沒有設置正確。任何人都有任何想法/幫助? – 2012-08-05 20:54:32