He usado UIScrollView
antes, y lo estoy usando ahora, y nunca he tenido un problema. Ahora lo estoy agregando a una aplicación anterior, y aunque funciona como se esperaba (puedo mirar el contenido, desplazarme con el dedo, todos los límites y tamaños están configurados correctamente, por lo que no hay espacio vacío en el contenido, etc. .), Simplemente no puedo hacer que scrollToRectVisible
funcione. Incluso he simplificado la llamada de modo que sólo se mueve a la posición de 0,0:UIScrollView funciona como se esperaba, pero scrollRectToVisible: no hace nada
[scrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:YES];
o moverlo a 0200:
[scrollView scrollRectToVisible:CGRectMake(0, 200, 10, 10) animated:YES];
Incluso me hizo una aplicación rápida de probar esto y puedo obtener scrollRectToVisible
para trabajar allí como yo esperaba. Pero en mi aplicación anterior, parece que no puedo hacer nada.
Puedo hacer que scrollView se desplace con setContentOffset:
, pero eso no es lo que quiero.
Este scrollView y su contenido están definidos en el plumín por IB y se usan con un IBOutlet. El único código que estoy utilizando en mi aplicación para manejar la ScrollView es
[scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, imageView.frame.size.height)];
(sólo estoy interesado en desplazamiento vertical no horizontal).
¿Alguien ha tenido un problema como este?
He comparado los atributos scrollView en ambas aplicaciones y son idénticos.
Adición:
mi cuerpo scrollViews es: 0.000000 0.000000 480.000000 179.000000
Mi scrollViews contentSize es: 0.000000 324.000000
Todavía actúa como el rect quiero para desplazarse hasta ya es visible y no hay se necesita desplazamiento. No estoy seguro de si eso es lo que está sucediendo. Esto es solo lo más desagradable. Parece que una cosa tan fácil de resolver ...
ADDENDUM # 2:
Así es como yo estoy haciendo prescindir scrollRectToVisible
:
CGPoint point = myRect.origin;
if (![clefScrollView pointInside:point withEvent:nil]) {
point.x = 0;
if (point.y > clefScrollView.contentSize.height - clefScrollView.bounds.size.height)
point.y = clefScrollView.contentSize.height - clefScrollView.bounds.size.height;
[clefScrollView setContentOffset:point animated: YES];
}
Todo lo demás de este ScrollView funciona como se esperaba, pero scrollRectToVisible
. ¿¡¿POR QUÉ?!? ¿Alguna suposición salvaje?
¡Gracias! También me tocó un poco (estaba configurando la altura pero no el ancho). –
Esto no es del todo correcto - c.f. La respuesta de Orion a continuación (tenía un ancho/alto distinto de cero, no es '0' el que causa el problema ...) – Adam
He hecho esto de manera similar pero aún scrollRectToVisible no funciona. Está trabajando en el simulador pero no en el dispositivo. Por favor ayuda. –