Pregunta

¿Cómo puedo configurar una acción para cuando un usuario hace doble clic una NSCollectionViewItem. NSTableView, por ejemplo, tiene el método setDoubleAction. ¿Hay algo similar para NSCollectionView?

Gracias

¿Fue útil?

Solución

probablemente querrá manejar esto en su NSCollectionViewItem, en lugar de la NSCollectionView en sí (para trabajar fuera de su analogía NSTableView).

Otros consejos

Sé que esta pregunta es antiguo, pero lo hará como el tercer resultado en Google en este momento, y he encontrado un método diferente y muy sencillo que no he visto documentado en otros lugares. (Yo no sólo tenga que manipular el elemento representado, pero tienen un trabajo más complejo que hacer en mi aplicación.)

NSCollectionView hereda de NSView, por lo que simplemente puede crear una subclase personalizada y anular mouseDown. Esto no es completamente sin trampas - que necesita para comprobar el número de clic, y convertir el punto de la ventana principal para ver su colección de coordenadas, antes de utilizar el método de NSCollectionView indexPathForItem:

override func mouseDown(with theEvent: NSEvent) {
    if theEvent.clickCount == 2 {
        let locationInWindow = theEvent.locationInWindow
        let locationInView = convert(locationInWindow, from: NSApplication.shared.mainWindow?.contentView)


        if let doubleClickedItem = indexPathForItem(at: locationInView){
        // handle double click - I've created a DoubleClickDelegate 
        // (my collectionView's delegate, but you could use notifications as well)
...

Esto se siente como si por fin he encontrado el método de Apple destinado a ser utilizado - de lo contrario, no hay razón para que exista indexPathForItem(at:).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top