2011-05-17 15 views

Respuesta

0

¿Por qué no lo intentas?

Para responder la pregunta: Sí, si el usuario tiene un mouse con una rueda de desplazamiento o un panel táctil con capacidad de desplazamiento, aún es posible desplazarse por la vista, a pesar de que los desplazamientos son invisibles.

+3

No estoy seguro de lo que estoy haciendo mal. Puedo desplazarme con mi trackpad cuando configuroHasizontralScroller: SÍ, pero no si setHasHorizontalScroller: NO. – NuBee

1

Hace que el ScrollView para no mostrar un desplazador y no responder a desplazamiento gestual:

-setHasHorizontalScroller:NO 

causa una rueda de desplazamiento con discapacidad que se mostrará, pero responde a gestual desplazamiento:

-setHasHorizontalScroller:YES 
-setHidden:YES 
+0

Creo que tal vez quiere decir "SÍ hace que se muestre un desplazamiento desactivado ** NO **, pero responde al desplazamiento gestual", ¿no? –

4

Crear Subclase NSScroller y establecerlo como el desplazador vertical/horizontal para la instancia NSScrollView.

El NSScroller subclase debe anular este (10.7 y superior):

+ (CGFloat)scrollerWidthForControlSize:(NSControlSize)controlSize scrollerStyle:(NSScrollerStyle)scrollerStyle { 
return 0; 
} 
+0

No funciona en 10.8. El desplazamiento permanece desactivado. – svoisen

3

Esto es definitivamente un error en AppKit. Yo era capaz de conseguir este funcionamiento en 10.8.5 utilizando cualquiera de las siguientes soluciones:

1) Subclase NSScroller (método preferido)

+ (BOOL)isCompatibleWithOverlayScrollers 
{ 
    // Let this scroller sit on top of the content view, rather than next to it. 
    return YES; 
} 

- (void)setHidden:(BOOL)flag 
{ 
    // Ugly hack: make sure we are always hidden. 
    [super setHidden:YES]; 
} 

Fuente: jmk en https://stackoverflow.com/a/12960795/836263

2) El rebote y el impulso parecen estar rotos cuando se usa el estilo heredado. También rompe parcialmente el código de scroll synchronization de Apple. Hace que las vistas de desplazamiento restablezcan la posición de desplazamiento si una es NSScrollerStyleOverlay y la otra es NSScrollerStyleLegacy. Si se desplaza la vista de desplazamiento de estilo de superposición, se desplaza el estilo heredado, restablece ambas vistas de desplazamiento a la parte superior y = 0 desplazamiento de desplazamiento.

[self.scrollView setHasVerticalScroller:YES]; 
[self.scrollView setScrollerStyle:NSScrollerStyleLegacy]; 
[self.scrollView setHasVerticalScroller:NO]; 
1

Sí, es posible. Intente esto pronto después de inicializar el scrollView.

self.scrollView.wantsLayer = YES; 

He conseguido que esto funcione sin ocultar una subclase NSScroller y sin tocar setHasVerticalScroller:. Además, si self.scrollView es una subclase que anula drawRect:, intente desactivarla para asegurarse de que lo que está haciendo allí no está causando el problema.

Cuestiones relacionadas