Tengo un NSTableView
que contiene una cantidad de elementos. Me gustaría implementar el arrastre desde dentro de y soltar fuera de de NSTableView para eliminar el elemento arrastrado. (Algo así como la forma en marcadores 'Poofs' Safari de distancia.)Arrastrando desde NSTableView para quitar
El NSTableView
ya está configurado para soportar la fricción n' reordenamiento gota, y acepta las gotas de otro NSTableView
en la aplicación, así que mientras que la mayor parte se cablea, me Me falta una pequeña funcionalidad.
Actualización:
Gracias a Sean por su ayuda hasta ahora. Si bien puedo recibir notificaciones de que un elemento ha sido arrastrado después de que ha flotado hacia atrás a su posición original (ver comentario a su respuesta), me gustaría recibir una notificación inmediatamente una vez que se suelta el botón del mouse.
El comportamiento actual es que el usuario arrastre y suelte un elemento, que el arrastre sea tratado como "no válido" y que el elemento vuelva a su posición original. Luego, se recibe la notificación, y puedo eliminar el elemento, pero es un poco confuso (para los usuarios) desde el punto de vista de la interfaz de usuario.
¿Deben definirse estos métodos en NSTableView o en el objeto que actúa como delegado/origen de datos? No necesité subclasificar el NSTableView para proporcionar el nivel actual de funcionalidad de arrastre, simplemente implementé algunos métodos de delegado y llamé a registerForDraggedTypes: La implementación de los métodos de arrastre que recomendó en la fuente de datos/delegado no pareció funcionar, pero los probaré en versiones subclases de las NSTableViews. –
Funcionó al agregarlos al NSTableView subclasificado, pero el problema es que la aplicación trata el arrastre como "malo", y la imagen flota de nuevo a su ubicación original, * luego * se invocan los métodos anteriores. ¿Alguna forma de recibir una notificación inmediatamente cuando se suelta el botón del mouse? –
Pude descifrar esa última parte. En mi NSTableView subclasificado, simplemente sobreescribo: ** dragImage: at: offset: event: pasteboard: source: slideBack: ** y luego pasé ese método a [super ...], mientras cambiaba el parámetro slideBack: a NO. –