2010-02-10 9 views
12

Estoy usando UIWebView para mostrar una página HTML simple. Cuando me desplazo por la página (arriba o abajo) ¡aparece una sombra gris detrás! ¿Puedo eliminar o evitar este mal efecto?¿Cómo eliminar sombra gris en la parte superior UIWebView cuando overscroll?

Thx

P. S. UIWebView, contenedor de vista, son todos de fondo claro y opaco ¡NO!

+2

¿Por qué han puesto esta sombra estúpida y no se proporciona un medio para eliminarlo? –

Respuesta

2

¡No es posible! En la web hay alguna solución que usa métodos privados de apple (funciones api no documentadas &). Por lo tanto, apple podría rechazar su aplicación.

+1

¿Has probado mi código? No veo por qué Apple lo negaría o tendría una forma de detectarlo, ya que no está llamando a ninguna apis privada. – Adolfo

+0

¡Su solución es buena! Lo intento temprano. Me refiero a otras soluciones fundadas en la Web ... :) – Undolog

+0

http://stackoverflow.com/questions/655225/uiwebview-underside – LolaRun

23

Las sombras son de la clase UIImageView. Puede recorrer las vistas de la primera subvista UIWebView y simplemente ocultar las vistas que coincidan con UIImageView.

id scrollview = [webView.subviews objectAtIndex:0];  
for (UIView *subview in [scrollview subviews]) 
    if ([subview isKindOfClass:[UIImageView class]]) 
    subview.hidden = YES; 

Aviso: La jerarquía de la vista podría cambiar en el futuro y esto no funcionaría haciendo que las sombras para volver.

+0

puse su código en viewDidLoad, y no funciona. – Momi

+0

[la subvista isKindOfClass: [UIImageView class]] sería más correcta, pero la respuesta correcta viene dada por Undolog. –

+0

Gracias, lo actualicé para ser "más correcto". :) – Adolfo

0

ponga uiwebview en uiscrollview y deshabilite uiwebview scrolling.

+0

ahora que es una idea –

0

Puede hacerlo.

webView.backgroundColor = [UIColor clearColor]; y un buen UIImageView en el fondo.

Esto es simple y fácil.

+0

la sombra seguirá siendo –

5

mira esto funcionó para mí ..

UIScrollView *scrollview = [webView.subviews objectAtIndex:0];
scrollview.bounces=NO;

+0

esa propiedad es solo webView.scrollView y solo lo hace para que no pueda desplazarse. No has eliminado la sombra molesta. –

0
for (id subview in _webView.subviews) 
      if ([[subview class] isSubclassOfClass: [UIScrollView class]]) { 
       for (UIView *scrollSubview in [subview subviews]) 
        if ([[scrollSubview class] isSubclassOfClass:[UIImageView class]]) 
         scrollSubview.hidden = YES; 
      } 

Esta solución no serán rechazadas.

4
for (UIView *view in self.webView.scrollView.subviews) { 
     if ([view isKindOfClass:[UIImageView class]]) { 
      view.hidden = YES; 
     } 
    } 

¿Por qué Apple sería rechazar este método, no hay parte indocumentado y privada :) obtendrán ningún punto de vista, y comprueba su clase, y ocultar ... Usted no se elimina, o reescribir los métodos .. No modificó (reescribió) ninguna parte del objeto ... solo lo ocultó, ¿no?

+1

¡Creo que esta es la mejor solución! – Florian

0

Para cualquier persona en esta situación donde no se requiera el desplazamiento, porque todo su contenido se ajusta, llamar al método sizeToFit en el UIWebView eliminará estas sombras.

Cuestiones relacionadas