2010-07-11 4 views

Respuesta

5

FYI, el IOS 5 ha presentado oficialmente la propiedad ScrollView en UIWebView. Lo probé Funcionó perfectamente con el código de extracción y actualización de EGO. Entonces, el problema ya no es un problema para ningún dispositivo iOS 5.

Para compatibilidad con versiones anteriores, aún así necesita el código de @ CedricSoubrie.

13

Para recuperar eventos de desplazamiento en UIWebView I personnaly utilizar este código para obtener el ScrollView que está dentro del UIWebView:

- (void) addScrollViewListener 
{ 
    UIScrollView* currentScrollView; 
    for (UIView* subView in self.myWebView.subviews) { 
     if ([subView isKindOfClass:[UIScrollView class]]) { 
      currentScrollView = (UIScrollView*)subView; 
      currentScrollView.delegate = self; 
     } 
    } 
} 

Está funcionando. También puede usarlo para llamar al [(UIScrollView*)subView setContentOffset:offSet animated:YES]; El único problema puede ser no pasar la comprobación del código de Apple. No lo sé todavía porque todavía estoy en la fase de codificación.

¿Alguien lo ha intentado todavía?

+0

Sé por cierto desarrollador que ella aprobó el proceso de aprobación mientras tenía algo como esto en el código, para eliminar las sombras 'UIWebView' (para eso también tendrías que obtener' UIScrollView') – Joost

+0

Works ¡como el encanto! (Aunque todavía no envié mi aplicación a la App Store) –

+0

Tenga cuidado, este código no funciona en iOS 5 porque el scrollView de la clase webView ha cambiado. Use este código en su lugar: if ([subView isKindOfClass: [UIScrollView class]]) Cambié mi publicación original para que el código sea compatible con iOS 5 – CedricSoubrie

1

Para obtener una referencia para UIScrollView en UIWebView, simplemente busque iterando a través de subvistas.

for(id eachSubview in [webView subviews]){ 
     if ([eachSubview isKindOfClass:[UIScrollView class]]){ 
      scrollView = eachSubview; 
      break; 
     } 
} 

Después de que se puede conectar fácilmente las cosas a su interfaz con el EGORefreshTableHeaderView UIWebView y las devoluciones de llamada de delegado UIScrollView.

1

Para decir la verdad, la clase UIWebVIew tiene un método getter no documentado llamado _scrollView; Así ocurre con el código:

scrollView = [webView _scrollView];

+0

Hacer las cosas de esta manera es usar una "API privada". Si usa el método de CedricSoubrie anterior, está utilizando solo métodos públicos. – jkp

Cuestiones relacionadas