2012-04-11 19 views
10

Mi UIWebView no debe permitir el desplazamiento vertical. Sin embargo, el desplazamiento horizontal debería ser posible.¿Cómo habilito el desplazamiento horizontal y desactivo el desplazamiento vertical en UIWebview?

He estado revisando la documentación, pero no he podido encontrar ninguna pista.

El código siguiente desactiva los dos sentidos de desplazamiento, pero quiero sólo para desactivar verticales:

myWebView.scrollView.scrollEnabled = NO; 

¿Cómo puedo solucionar este problema?

Respuesta

30

habilitar el desplazamiento horizontal y vertical desactivar el desplazamiento:

myWebView.scrollView.delegate = self; 
[myWebView.scrollView setShowsVerticalScrollIndicator:NO]; 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y > 0 || scrollView.contentOffset.y < 0) 
     scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0); 
} 

la segunda línea habrá ocultar el indicador de desplazamiento vertical. Comprobando si "scrollView.contentOffset.y < zero" deshabilitará el rebote cuando intente desplazarse hacia abajo. También puede hacer: scrollView.bounces = NO para hacer lo mismo. Al observar la respuesta de Rama Rao, puedo decir que su código restablecerá el scrollView a (0.0) el momento en que intenta desplazarse verticalmente, alejándolo de su posición horizontal, lo que no es bueno.

habilitar el desplazamiento vertical y desactivar el desplazamiento horizontal:

myWebView.scrollView.delegate = self; 
[myWebview.scrollView setShowsHorizontalScrollIndicator:NO]; 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x > 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
} 

PAZ

3
-(void) scrollViewDidScroll:(UIScrollView *)scrollView{ 
    if (scrollView.contentOffset.y>web.frame.origin.x) { 
     scrollView.contentOffset = CGPointMake(0, 0); 
    } 
} 

De esta manera podemos resolver el problema. Tome un objeto ScrollView mundial de la siguiente manera:

UIScrollView* scrollView =web.scrollView; 

conjunto delegado para desplazarse a continuación -(void) scrollViewDidScroll:(UIScrollView *)scrollView vista serán llamados y se puede obtener el resultado. Lo comprobé en ambas versiones (iOS 5 & iOS 4.2)

+0

Creo que esto solo ocultará los indicadores de desplazamiento, no restringirá el desplazamiento. – danh

+0

Kk ahora lo entendí. Puedo configurar el tamaño del contenido como el anterior que edité. –

+0

especifique la altura debajo de la altura del marco de la vista web en lugar de 0. –

1

Dejar scrollEnabled == YES. La vista de desplazamiento restringirá el desplazamiento en función del tamaño del contenido. Para permitir sólo el desplazamiento horizontal, establezca la contentSize algo como esto:

scrollView.contentSize = CGSizeMake(1000, scrollView.bounds.size.height); 

El ancho debe estar relacionado con el ancho de lo que se está desplazando dentro de la vista de desplazamiento.

+0

estos códigos no restringen el desplazamiento en iOS5.0 –

+0

Hola. Tengo una vista web en Tablecell. Quiero que sea un desplazamiento horizontal. Pero cuando se desplaza verticalmente, debe ignorar y desplazarse por la tabla. – Durgaprasad

3

para hacer que funcione por completo, escribir:

webview.scrollView.delegate = self; 
    [webview.scrollView setShowsHorizontalScrollIndicator:NO]; 

} 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x > 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
    if (scrollView.contentOffset.x < 0) 
     scrollView.contentOffset = CGPointMake(0, scrollView.contentOffset.y); 
} 

simplemente he añadido las dos últimas líneas, porque cuando lo escribe como lo hizo pnizzle, no puede desplazarse del lado derecho al izquierdo, pero todavía de la izquierda a la derecha.

Buena suerte

+0

Touché. Pero si la vista de desplazamiento no puede desplazarse hacia adelante, ¿cómo le permitirá desplazarse hacia atrás? No puedes salir de una casa en la que nunca entraste bien. A menos que agregue programáticamente una vista de desplazamiento cuyo contentOffset ya está configurado en más de cero, entonces su código entra. – pnizzle

Cuestiones relacionadas