2017-10-13 2 views
0

Ich habe die Ziehen-Funktion & für eine NSOutlineView Drop-Funktion implementiert. Ich kann neue Objekte hineinziehen und die Objekte neu anordnen. Allerdings gibt es ein seltsames Verhalten:NSOutlineView zeigt die blaue Hilfslinie/Trennlinie beim Einziehen nicht an

Wenn ein oder mehr Elemente neu geordnet wurden (durch & Abwurf ziehen), wenn ein neues Element in geschleppt wird, zeigt der NSOutlineViewnicht den üblichen „blue Separator Zeile "zwischen zwei Zeilen (wo es den Tropfen akzeptieren kann). Stattdessen wird eine Lücke geöffnet mit der gleichen Animation wie die einer lokalen Neuordnung.

Wenn kein Artikel nachbestellt wurde, wird die blaue Linie wie üblich angezeigt.

Die NSOutlineView ist ausschließlich mit einer NSOutlineViewDataSource bestückt. Es wurde gerade von einer "Kakaobindung" (mit NSTreeController) umgesetzt, die ohne dieses Problem funktionierte.

Antwort

1

Diese NSTableViewDraggingDestinationFeedbackStyle steuert das Trennverhalten.

bemerkte ich aus Versehen die Linie 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 
    } 
Verwandte Themen