2017-10-13 102 views
0

我實施了NSOutlineView的拖放功能&。我可以拖入新項目並重新排列項目。然而,有一個奇怪的行爲當拖入時,NSOutlineView不顯示藍色嚮導/分隔符

如果一個或多個項目已重新排序(通過拖動&掉下來了),當一個新項目被拖動,該NSOutlineView不顯示通常的「藍分離器行「在兩行之間(它可以接受放置)。相反,與本地重新排序相同的動畫會打開一個缺口

如果沒有項目重新排序,則藍色線條顯示如常。

NSOutlineView僅填充NSOutlineViewDataSource。它剛剛從「可可綁定」(與NSTreeController)的設置中遷移,該設置在沒有此問題的情況下運行。

回答

1

這個NSTableViewDraggingDestinationFeedbackStyle控制分離行爲。

我不小心註釋掉線outlineView.draggingDestinationFeedbackStyle = .sourceList

func outlineView(_ outlineView: NSOutlineView, 
       draggingSession session: NSDraggingSession, 
       willBeginAt screenPoint: NSPoint, 
       forItems draggedItems: [Any]) 
{ 
    outlineView.draggingDestinationFeedbackStyle = .gap 
} 

func outlineView(
     _ outlineView: NSOutlineView, 
     draggingSession session: NSDraggingSession, 
     endedAt screenPoint: NSPoint, 
     operation: NSDragOperation) 
    { 
     outlineView.draggingDestinationFeedbackStyle = .sourceList 
    }