Probleme de drag & drop
Philippe49
Membre
Problème avec Drag and drop
Lors de la confection d'une palette perso pour IB, en gros trois classes sont à renseigner :
Une custom view qui est l'objet que l'on transfère de la palette vers la fenêtre,
Une sous-classe de IBPalette qui gère le dessin de la palette dans IB
Une sous-classe de IBInspector pour gérer le transfert d'information avec l'inspecteur.
Mon problème maintenant :
Pour que la vue transférée puisse recevoir d'autres widgets et en faire des sous-vues, il faut mettre en place un système de drag & drop.
Apparemment, les exemples (comme ProgressViewPalette) implémentent le protocole (IBViewResourceDragging.h) dans la sous-classe d'IBPalette à l'aide de trois méthodes que j'ai adaptées pour l'instant ainsi afin de voir le transit des appels :
Quelque part dans l'initialisation : [NSView registerViewResourceDraggingDelegate:self];
- (NSArray *)viewResourcePasteboardTypes{
NSLog(@Palette : Asking view Ressources Pasteboard types);
return [NSArray arrayWithObjects:IBViewPboardType,IBObjectPboardType,IBWindowPboardType,NSColorPboardType,nil];
}
- (BOOL)acceptsViewResourceFromPasteboard:(NSPasteboard *)pasteboard forObject:(id)object atPoint:(NSPoint)point
{
NSLog(@Palette : acceptsViewResourceFromPasteboard : %@ with types : %@",pasteboard,[pasteboard types]);
NSLog(@class of object : %@",[object class]);
return YES;
}
- (void)depositViewResourceFromPasteboard:(NSPasteboard *)pasteboard onObject:(id)object atPoint:(NSPoint)point
{
NSLog(@Palette : depositViewResourceFromPasteboard);
}
Résultat désespérant :
acceptsView ... est bien pris en compte, quelque soit le widget transféré depuis la palette : c'est logique compte-tenu du type d'enregistrement.
mais aucun signe du depositView..
J'ai essayé de rendre la vue compatible avec les protocoles NSDraggingSource puis NSDraggingDestination ---> rien
Merci si vous avez des pistes de réflexion à me proposer.
Lors de la confection d'une palette perso pour IB, en gros trois classes sont à renseigner :
Une custom view qui est l'objet que l'on transfère de la palette vers la fenêtre,
Une sous-classe de IBPalette qui gère le dessin de la palette dans IB
Une sous-classe de IBInspector pour gérer le transfert d'information avec l'inspecteur.
Mon problème maintenant :
Pour que la vue transférée puisse recevoir d'autres widgets et en faire des sous-vues, il faut mettre en place un système de drag & drop.
Apparemment, les exemples (comme ProgressViewPalette) implémentent le protocole (IBViewResourceDragging.h) dans la sous-classe d'IBPalette à l'aide de trois méthodes que j'ai adaptées pour l'instant ainsi afin de voir le transit des appels :
Quelque part dans l'initialisation : [NSView registerViewResourceDraggingDelegate:self];
- (NSArray *)viewResourcePasteboardTypes{
NSLog(@Palette : Asking view Ressources Pasteboard types);
return [NSArray arrayWithObjects:IBViewPboardType,IBObjectPboardType,IBWindowPboardType,NSColorPboardType,nil];
}
- (BOOL)acceptsViewResourceFromPasteboard:(NSPasteboard *)pasteboard forObject:(id)object atPoint:(NSPoint)point
{
NSLog(@Palette : acceptsViewResourceFromPasteboard : %@ with types : %@",pasteboard,[pasteboard types]);
NSLog(@class of object : %@",[object class]);
return YES;
}
- (void)depositViewResourceFromPasteboard:(NSPasteboard *)pasteboard onObject:(id)object atPoint:(NSPoint)point
{
NSLog(@Palette : depositViewResourceFromPasteboard);
}
Résultat désespérant :
acceptsView ... est bien pris en compte, quelque soit le widget transféré depuis la palette : c'est logique compte-tenu du type d'enregistrement.
mais aucun signe du depositView..
J'ai essayé de rendre la vue compatible avec les protocoles NSDraggingSource puis NSDraggingDestination ---> rien
Merci si vous avez des pistes de réflexion à me proposer.
Connectez-vous ou Inscrivez-vous pour répondre.