2010-11-03 10 views
15

Tengo un NSSplitView (NO UISplitView (Controller) !!) con tres subvistas. Ahora, para el último divisor (índice 1), quiero que el divisor no muestre el cursor de arrastre (dos flechas que apuntan entre sí). Tengo esto para detener el arrastre, pero el cursor todavía está apareciendo:Haga que el divisor de un NSSplitView sea indpendible y no muestre el cursor de arrastre

- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex { 
    if (dividerIndex == 1) { 
    return [splitView frame].size.width - 161; 
    } 
} 

Tenga en cuenta que sólo quiero ocultar el cursor para el divisor en el índice 1. ¿Alguien puede ayudarme? Gracias. :)


No, no quiero usar BWToolkit.

Respuesta

0

Intente utilizar splitView:constrainMaxCoordinate:ofSubviewAt: y splitView:constrainMinCoordinate:ofSubviewAt: en lugar de splitView:constrainSplitPosition:ofSubviewAt:.

Los dos métodos anteriores se invocan una vez cuando el usuario arrastra el mouse y brindan suficiente información para que NSSplitView sepa cómo cambiar el cursor durante el arrastre.

Este último se invoca repetidamente a medida que el usuario arrastra el divisor, por lo que NSSplitView no tiene suficiente información para saber que está devolviendo un valor constante cada vez y, por lo tanto, no puede cambiar el cursor.

+8

** Ver la respuesta siguiente por * Mike A * para un mejor enfoque ... ** – Jay

73

Sé que esto ha sido respondido por un tiempo, pero la respuesta suministrada no se ajustaba a mis necesidades.

El método delegado splitView:effectiveRect:forDrawnRect:ofDividerAtIndex: le permite establecer el rectángulo efectivo para arrastrar el divisor. Si devuelve NSZeroRect, no aparecerá ningún cursor de arrastre, independientemente de su configuración en splitView:constrainMaxCoordinate:ofSubviewAt: y splitView:constrainMinCoordinate:ofSubviewAt:.

Espero que ayude a alguien más que aterrice aquí.

+0

¡Excelente! Exactamente lo que necesitaba :) –

+0

¡Sin duda ayudó! Gracias – isobar

+1

¡Esto funciona perfectamente para evitar que el cursor de cambio de tamaño aparezca incluso cuando se usa Diseño automático para administrar la vista dividida! ¡Gracias! – Andrew

Cuestiones relacionadas