tutorial open example crear iphone uiwebview scroll

iphone - open - Deshabilitar Desplazar en un UIWebView permitido?



uiwebview tutorial (18)

Úselo:

[[webView scrollView] setBounces:NO]; [[webView scrollView] setScrollingEnabled:NO];

Tengo que mostrar un artículo web con UITableView en el artículo.

La única opción que encontré fue mostrar el artículo en un UIWebView en el encabezado tableView.

Para hacer eso, tengo que obtener el alto del contenido de webView y tengo que deshabilitar el desplazamiento para el webView.

Encontré dos soluciones para deshabilitar el desplazamiento:

for (id subview in webView.subviews) if ([[subview class] isSubclassOfClass: [UIScrollView class]]) ((UIScrollView *)subview).scrollEnabled=NO;

o en JavaScript:

<script type="text/javascript"> touchMove = function(event) { event.preventDefault(); }

Escuché que la primera solución está prohibida por Apple, pero no tengo ninguna prueba de ello. ¿Mi aplicación será rechazada al usar esta solución? Si es así, ¿puedo usar la segunda solución sin ser rechazado?


¡Ya que esta pregunta todavía es aplicable, hay una nueva forma de hacerlo! (iOS 7.0+, quizás iOS 6 también, no confirmado)

webView.scrollView.scrollEnabled = NO;

Cuídate :)


¿Es una UIWebview y una UITableView en un UIScrollview, y establece el alto de la vista web (y agrega al Total Content Size de Scrollview) como lo que quiere?


Comenzando con iOS5 tenemos acceso directo a la vista de desplazamiento de UIWebView.
Puede deshabilitar el desplazamiento y rebotes como este:

webView.scrollView.scrollEnabled = NO; webView.scrollView.bounces = NO;


Creo que el Javascript

<script type="text/javascript"> touchMove = function(event) { event.preventDefault(); }

es lejos la mejor solución.

En efecto :

Su primer examen, o el

[[[WebView subviews] lastObject] setScrollingEnabled:NO];

una (las mismas cosas) podría rechazarse porque no está documentada, o hacer que la aplicación se bloquee en una nueva actualización de ios.

Y el

[[myWebView scrollView] setBounces:NO];

método no funcionará con iOS <5.


El primero es rechazado por Apple. Me pasó justo esta mañana.


Necesitaba deshabilitar el desplazamiento porque descartar el uso de un teclado personalizado realmente estropeó el desplazamiento con la vista web. Nada más funcionó y recurrí a algo como esto:

-(void)viewDidLoad{ [super viewDidLoad]; [self.webView.scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; self.webView.scrollView.showsVerticalScrollIndicator = NO; } -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if (!CGPointEqualToPoint(self.webView.scrollView.contentOffset, CGPointZero)){ self.contentOffset = CGPointZero; } }


No creo que la primera opción esté prohibida por Apple.

Tu podrías intentar

[[[Webview subviews] lastObject] setScrollingEnabled:NO];

Si no desea que ningún enlace funcione en su UIWebView, también puede hacer

[myWebView setUserInteractionEnabled:NO];


Prueba esto,

[(UIScrollView *)[[webView subviews] lastObject] setScrollEnabled:NO];


Pruebe esto en su HTML (etiqueta <HEAD> )

<script> document.ontouchmove = function(event) { event.preventDefault(); } </script>

Deshabilitará el desplazamiento en su página web.

(funciona en cualquier página web, no solo en UIWebView)


Simplemente puede establecer la propiedad de interacción del usuario de la vista web en no, es decir,

webView.userInteractionEnabled = NO;

Es bastante simple y funciona bien, gracias :)


Utilice este <body ontouchmove="event.preventDefault()">


Versión SWIFT 3

webView.scrollView.bounces = false webView.scrollView.isScrollEnabled = false


[[myWebView scrollView] setBounces: NO];


para todas las versiones de ios, puede usar este código en lugar de setScrollEnabled:

for (UIView *view in webview.subviews) { if ([view isKindOfClass:[UIScrollView class]]) { UIScrollView *scrollView = (UIScrollView *)view; scrollView.scrollEnabled = NO; } }


UIWebView algunos UIWebView dentro de un UIScrollView y no se desplazó por mí, a menos que deshabilite la interacción del usuario en las vistas web (incluso con el [[webview scrollview] setScrollEnabled:NO] ). Así que coloqué UIWebView dentro de UIView y me funcionó, pero los enlaces interactivos o divs en mi HTML dentro de UIWebView ya no funcionaban.

Lo único que funcionó para mí es mantener UIWebView dentro de UIScrollView para que las interacciones HTML funcionen, pero el UIScrolling no funciona.

Luego creé un delegado personalizado para las vistas web para escuchar en window.open("http:/customEvent") que se llama desde el HTML contenido en la vista web. También agregué una detección de barrido de JavaScript que activará mi evento personalizado.

Cuando el delegado de la vista web recibe esto, paso una notificación a un controlador que luego desplaza dinámicamente mi UIScrollView . Obviamente tuve que construir una lógica para monitorear y desplazarme a la página siguiente o anterior. No es la solución más bonita pero funciona para mí.


[[[WebView subviews] lastObject] setScrollingEnabled:NO];


[[[WebView subviews] lastObject] setScrollingEnabled:NO];

eso lo ordenó para mí