tienen texto que página propiedad para palabra las incluir imágenes imagenes imagen función fotos explique etiquetas esta enfoque contengan con clave atributos atributo alternativo drag-and-drop nstableview nstablecellview

drag-and-drop - texto - seo de las imagenes



Imagen de arrastre personalizada con NSTableView como fuente de arrastre (2)

En su fuente de datos , querrá configurar las imágenes, por ejemplo, desde su tableView:draggingSession:willBeginAtPoint:forRowIndexes: method like so

[session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent forView:tableView classes:[NSArray arrayWithObject:[NSPasteboardItem class]] searchOptions:nil usingBlock:^(NSDraggingItem *draggingItem, NSInteger index, BOOL *stop) { [draggingItem setDraggingFrame:NSMakeRect(0, 0, myWidth, myHeight) contents:myFunkyDragImage]; }];

¿Es necesario subclasificar NSTableView o NSTableCellView para crear una imagen de arrastre personalizada cuando tableView es la fuente de arrastre?

Si no, ¿cuál es el método mágico que me falta para hacer esto? Parece que no puedo encontrar nada sólido.

Las subclases NSTableCellView pueden anular (ligeramente misteriosamente):

@property(retain, readonly) NSArray *draggingImageComponents (matriz de instancias NSDraggingImageComponent que se compondrán juntas (quién sabe de qué manera se compondrán ...))

NSTableView tiene

- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset

Pero estas son, de hecho, opciones de subclases, parece.

¿Alguien conoce otra técnica aquí? (10.8+ es el objetivo)


Parece como si NSTableViewCell

@property(retain, readonly) NSArray *draggingImageComponents

no se llama automáticamente, pero se debe hacer referencia explícita a las vistas de tabla basadas en vistas. -draggingImageComponents se puede anular para suministrar los componentes utilizados para componer la imagen de arrastre.

- (void)tableView:(NSTableView *)tableView draggingSession:(NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint forRowIndexes:(NSIndexSet *)rowIndexes { // configure the drag image // we are only dragging one item - changes will be required to handle multiple drag items BPPopupButtonTableCellView *cellView = [self.columnsTableView viewAtColumn:0 row:rowIndexes.firstIndex makeIfNecessary:NO]; if (cellView) { [session enumerateDraggingItemsWithOptions:NSDraggingItemEnumerationConcurrent forView:tableView classes:[NSArray arrayWithObject:[NSPasteboardItem class]] searchOptions:nil usingBlock:^(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop) { // we can set the drag image directly //[draggingItem setDraggingFrame:NSMakeRect(0, 0, myWidth, myHeight) contents:myFunkyDragImage]; // the tableview will grab the entire table cell view bounds as its image by default. // we can override NSTableCellView -draggingImageComponents // which defaults to only including the image and text fields draggingItem.imageComponentsProvider = ^NSArray*(void) { return cellView.draggingImageComponents;}; }]; } }