2009-10-10 12 views

Odpowiedz

3

Nie można tego zrobić, korzystając tylko z interfejsów API źródeł drag.

Jeśli spojrzysz na Interface Builder, robi to coś, co chcesz. Po przeciągnięciu przycisku z biblioteki przycisk uruchamia się w środku przeciągania.

Według większości ludzi sposób, w jaki robi to firma Apple, polega na tym, że obraz przeciągania staje się małym przezroczystym obrazem. Następnie tworzą okno i każą podążać za myszą. Następnie możesz użyć tego okna do wykonania dowolnego rodzaju animacji.

+5

Przynajmniej jak z 10.7+ przyjętą odpowiedź nie jest prawidłowa - patrz Иван Георгиев odpowiedź dla obecnego sposobu, aby zmienić rzeczy w połowie przeciągnij! – cacau

5

Joshua Nozzi opublikował świetny sposób, aby to zrobić: http://joshua.nozzi.name/2009/10/jlndrageffectmanager/

+1

Tak. To jest menedżer kropli dla tego konkretnego efektu. Pobieranie zawiera aplikację demonstracyjną. –

+1

Jeśli skończysz używać tej klasy, daj mi znać, a dodam ją do listy na stronie źródłowej. –

4

Check out enumerateDraggingItemsWithOptions metodę NSDraggingInfo użytkownika.

+2

Edytuj swoją odpowiedź, aby rozwinąć: W jaki sposób użyjesz tej metody, aby rozwiązać ten problem? –

16

Można to zrobić za pomocą metody enumerateDraggingItemsWithOptions: z NSDraggingInfo w metodach obsługi przeciągania miejsca docelowego (np. - implementacja protokołu NSDraggingDestination).

Na przykład:

- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender 
{ 
    NSImage* newDragImage = <take it from wherever>; 
    [sender enumerateDraggingItemsWithOptions:0 
             forView:sender.draggingSource 
             classes:[NSArray arrayWithObject:[NSPasteboardItem class]] 
           searchOptions:nil 
            usingBlock:^(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop) { 
             NSRect theFrame = draggingItem.draggingFrame; 
             theFrame.size = newDragImage.size; 
             [draggingItem setDraggingFrame:theFrame contents:newDragImage]; 
             *stop = NO; 
            }]; 
} 
Powiązane problemy