inside example doesn iphone cocoa-touch uiscrollview

iphone - example - uiscrollview autolayout



UIScrollView no muestra indicador de desplazamiento (8)

Tengo un UIScrollView que creo y tamaño dinámicamente usando ...

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length);

Luego agrego subviews al UIScrollView . Tengo scrollView.showsVerticalScrollIndicator = YES;

Cuando se desplaza el indicador de desplazamiento nunca aparece.

Incluso si llamo [scrollView flashScrollIndicators] no pasa nada.

Ideas?


Arreglo esto agregando este código después de agregar una nueva subvista:

self.showsVerticalScrollIndicator = NO; self.showsVerticalScrollIndicator = YES;


Cuando traté esto antes, en mi implementación de una cuadrícula, ocasionalmente obtenía algunas celdas sobre la parte superior del indicador de desplazamiento. Para solucionar esto, ahora estoy insertando subvistas en el índice 0 en lugar de agregarlas, lo que las agrega a la parte superior. Así que intenta algo como esto:

[scrollview insertSubview:subview atIndex:0];


Dos condiciones,

  1. Si estás utilizando un guión gráfico
  2. Si está utilizando un UITableView dentro de un UIViewController

Luego, debe verificar que las inserciones de los indicadores estén configuradas en 0 (o cualquier otro número que sea relevante para su diseño automático):


Noté esto cuando el UIScrollView era una banda horizontal de 48 px de altura, desplazable horizontalmente. Tal vez Cocoa decide que el área es demasiado pequeña para un indicador de desplazamiento ...


Para mí, el indicador horizontal había desaparecido misteriosamente en mi aplicación en iOS 7. Más tarde, descubrí que, por alguna extraña razón, tenía que habilitar los Shows Horizontal Indicator y el Shows Vertical Indicator para que el horizontal apareciera. Si lo configuro para que no muestre el indicador vertical, tampoco mostrará el indicador horizontal.


También ocurrirá (al menos en el caso de un UITableView) si contentSize es demasiado pequeño para que se desplace la vista de tabla. Si ha habilitado el rebote, la vista de tabla no se desplaza realmente y, por lo tanto, no muestra los indicadores. Intenta encajar más contenido dentro.


También puede suceder si el padre de la vista de desplazamiento es más pequeño horizontalmente que la vista de desplazamiento en sí:

La barra de desplazamiento está pegada al lado derecho de ScrollView / TableView y este lado derecho no está visible debido a los límites principales (con un clipToBounds que lo oculta , por ejemplo).

He visto este problema, así que lo comparto en caso de que pueda ayudar.

Simplemente verifique que el ancho del marco de su ScrollView no sea más grande que el ancho de su marco de vista principal.


Tenía el mismo problema y no podía encontrar la causa. La última respuesta dio la sugerencia final: cada vez que agregué nuevas subvistas, eliminé todas las subvistas existentes de la vista de desplazamiento (y al parecer también los indicadores de desplazamiento).

Después de verificar en mi bucle, si la subvista realmente fue del tipo que quería que se eliminara, aparecieron los indicadores de desplazamiento:

for (NSObject * subview in [[[scrollView subviews] copy] autorelease]) { if ([subview isKindOfClass:[MySubView class]]) { [(MySubView*)subview removeFromSuperview]; } }

Actualización: código cambiado a la sugerencia de Nikolai