2010-04-16 6 views
13

Tengo un UIScrollView contenido en una UIView personalizada con un tamaño de contenido mayor que el marco de ScrollView.UIScrollView no rebota

Puedo arrastrar el desplazamiento como espero, pero esto no me da el efecto de banda de goma que se obtiene con UITableView o UIWebView. Simplemente se detiene cuando llegas a uno de los extremos.

He configurado bounce = YES, ¿hay alguna otra cosa que deba hacer?

He leído los documentos, y dicen que tengo que implementar el delegado. Yo lo hice.

También dicen que debería cambiar los niveles de zoom, pero no quiero que el usuario realmente pueda hacer zoom, así que no los configuré.

Respuesta

44

Para cualquier persona que se encuentra este hilo después, si está subclassing UIView y re-establecer el marco de la UIScrollView 's en cada layoutSubviews, ese es el problema - que anula el rebote:

http://openradar.appspot.com/8045239

Usted debe hacer algo similar a esto:

- (void)layoutSubviews; 
{ 
    [super layoutSubviews]; 

    CGRect frame = [self calculateScrollViewFrame]; 
    if (!CGRectEqualToRect(frame, self.scrollView.frame)) 
     self.scrollView.frame = frame; 
} 
+0

eres el hombre – wbarksdale

+0

horas perdidas de esfuerzo desviado por varios agujeros de conejo antes sospechando esto ¡Gracias! – aehlke

0

Eso es interesante ... ¿Pasan muchas cosas mientras el usuario se desplaza por la vista de desplazamiento? Tal vez eso podría causar el problema. El iPhone puede realizar múltiples tareas, pero no demasiado. ¿Puedo ver todo el código relacionado con la vista de desplazamiento?

+0

Nada interesantes que ocurren en todo! Solo hay una vista de desplazamiento con un UIView grande agregado como una subvista cuyo marco es del mismo tamaño que el tamaño de contenido de la vista de desplazamiento. La subvista tiene un montón de UIView personalizados como niños. –

3

Resulta que mantener el UIScrollView dentro de mi UIView personalizado estaba causando el problema.

Una vez que cambie mi UIView personalizado para heredar de UIScrollView, el rebote comenzó a funcionar.

+0

Esto es lo que estaba sucediendo: http://openradar.appspot.com/8045239 – leolobato

+0

Tengo este problema con UIScrollViews anidados. Comprobé que los fotogramas de las subvistas no se modificaban innecesariamente al llamar a layoutSubviews como los estados de los enlaces de Openradar y también estoy usando una subclase UIScrollView para el scrollView interno que no rebota – Pacu

26

que tenía el mismo problema, en un UIScrollView que no estaba llena de todo (pero todavía quería que rebote). Sólo enchufar:

scroll.alwaysBounceVertical/Horizontal = YES; 

Y funcionó como se esperaba

+0

Muy útil cuando tiene un control de actualización en la vista de desplazamiento, pero no contiene suficiente para rebotar (lo que impide que el control de actualización funcione). – DMan

Cuestiones relacionadas