2012-10-03 22 views
14

Tengo un UIRefreshControl en la parte superior de mi mesa.UIRefreshControl in Landscape

La pantalla está en el paisaje.

El problema es que no puedo tirar lo suficiente para activar la actualización, porque hay muy poco espacio en Landscape. ¿Hay alguna manera de ajustar la cantidad que tiene que desplegar?

+0

muy interesados ​​en descubrir la causa principal de este problema. No se puede reproducir en Xcode 4.5 en OS X 10.8.2 – Zelko

+4

mi aplicación tiene una barra de navegación, así como UISearchBar en la parte superior de la tabla, por lo que hay menos espacio para tirar – cannyboy

+0

Si solo tiene una barra de navegación y una búsqueda bar entonces es justo, suena como que esto debería funcionar como se esperaba. La aplicación de correo tiene barra de búsqueda y barra de navegación, funciona bien allí, ¿qué más tienes en la pantalla? – Daniel

Respuesta

10

La forma en que puede ajustar qué tan lejos tiene que tirar es alterando la altura del UITableView. UIRefreshControl ajusta su altura de distorsión máxima de forma proporcional a la altura de tableView. Si no puede cambiar la altura de la vista de tabla, por favor file a bug con los detalles de su situación y con suerte será abordado en una futura versión de iOS.

Además, ¿ha intentado bajar más rápido?

+3

Ajuste de la altura de una tabla vista parece no tener ningún efecto en absoluto. – cannyboy

+0

@cannyboy eso es muy interesante. Por favor, presente un error con los detalles. ¡Gracias! :) –

+0

sí, la altura de la tabla no cambia la "altura máxima de distorsión proporcionalmente a la altura de la tabla vista", archivé un error – ugiflezet

10

Recuerde que su vista de tabla es solo una subclase de UIScrollView. En su controlador, implemente el método scrollViewDidScroll y llame al -beginRefreshing en su UIRefreshControl como se indica a continuación.

Pero la animación de UIRefreshControl durante el proceso de actualización no será tan fácil como cabría esperar. Pero funciona.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y < -98 && ![self.refresher isRefreshing]) { 
     [self.refresher beginRefreshing]; 
     //do all the work 
     [self.refresher endRefreshing]; 
    } 
} 
+0

Buena solución por ahora. –

+2

Recuerda que es mejor ponerlo dentro de ScrollViewDidEndDragging: –

0

si su contentsize tiene la altura no es suficiente para tirar hacia abajo, es posible que tenga que activar su vertical, mediante el uso de self.collectionView.alwaysBounceVertical = YES;