2012-09-24 41 views
5

añado un ScrollView ficticia para mi aplicación para detectar un usuario haga clic en la barra de estado, a Performa un evento en mi programa .. Estoy creando en el viewDidLoad:iOS6 ScrollBarShouldScrollToTop no disparar/tema ScrollView Delegado

//Dummy Scroll is for the tap on status bar to work 

UIScrollView *dummyScrollView = [[UIScrollView alloc] init]; 
dummyScrollView.delegate = self; 
[[self view ] addSubview:dummyScrollView]; 
[[self view] sendSubviewToBack:dummyScrollView]; 

luego implemento:

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView 
{ 

NSLog(@"scrollViewShouldScrollToTop"); 
. 
. 
} 

En todas las versiones anteriores de iOS esto ha funcionado muy bien y sin problemas, sin embargo, en virtud de la iOS 6 scrollViewShouldScrollToTop nunca se llama. ¿Es esto un error? La API dice que esto todavía debería estar disponible como parte del delegado en iOS6, pero bajo iOS6 tanto en el dispositivo como en el simulador nunca se ejecuta ... ¿Alguien tiene alguna idea de lo que está pasando?

¿Todavía no hay otra TableView o ScrollView, pero hay una MAPVIEW? Pero el MapView no tiene un shouldScrollToTop que puedo encontrar para establecerlo a NO ... así que todavía estoy más allá de confundir por qué esto dejó de funcionar en iOS 6 ...

Respuesta

0

En iOS 6, solo toque la parte de arriba de la vista de desplazamiento de la barra de estado para disparar el evento scrollsToTop.

Y, ese scrollView no se puede ocultar o 0 alfa.

Pero puede ser cubierto. o color de fondo claro.

Así que en iOS 6, es necesario

dummyScrollView.frame = self.view.bounds; 
dummyScrollView.backgroundColor = [UIColor clearColor]; 
5

¿Hay alguna posibilidad de que UIScrollView esté creando ¿No es de alguna manera el único UIScrollView en su jerarquía de vistas? Parece que en iOS6, si tiene más de un UIScrollView en su jerarquía de vistas, solo uno debería tener scrollsToTop = YES. Este es el que tendrá su método scrollViewShouldScrollToTop llamado.

Mi problema fue similar en que tuve una muy UITableView básica que ya no desplazamiento automático de la parte superior cuando la barra de estado fue golpeado ligeramente. Finalmente recordé que una de las celdas en mi tableView usa un UIWebView, y que el webView.scrollView de la celda estaba (correctamente, ahora en iOS6) secuestrando la llamada a scrollViewShouldScrollToTop que, antes de iOS6, se estaba haciendo en mi tableView.

Después de configurar el tableViewCell "scrollsToTop = NO", la barra de estado de desplazamiento automático trabajó una vez más como lo hacía antes. Aquí está más o menos cómo se ve el código:

myCustomCellWithAWebView.webView.scrollView.scrollsToTop = NO; 

Hope this helps!

+1

FYI, esto no es un comportamiento nuevo en iOS 6 - que ha estado presente desde hace mucho tiempo. Ver http://stackoverflow.com/questions/4167806/automatic-scroll-to-top-doesnt-work-in-uitableview/5557900#5557900 –

+0

No hay otras vistas de desplazamiento en mi aplicación, que no sean las ocultas utilizadas para activar el clic en la barra de estado para disparar el evento. – user282172

+0

¿Qué sucede si no lo envía a la parte posterior? ¿Funciona si lo dejas arriba? Si es así, déjelo en la parte superior y establezca el alfa en 0 o colóquelo fuera de la pantalla, tal vez. –