2012-04-19 9 views
11

he añadido un WebView a mi aplicación y me carga de una página en la que el uso de este código:he añadido un WebView a mi aplicación de cacao y se está generando un error

-(void)awakeFromNib{ 
    NSString *resourcesPath = [[NSBundle mainBundle] resourcePath]; 
    NSString *htmlPath = [resourcesPath stringByAppendingString:@"/calendarHTML/test.html"]; 
    [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:htmlPath]]]; 
} 

Sin embargo, cuando ejecuto la aplicación recibo el siguiente error:

Layout still needs update after calling -[WebHTMLView layout]. 
WebHTMLView or one of its superclasses may have overridden 
-layout without calling super. Or, something may have dirtied 
layout in the middle of updating it. Both are programming errors in 
Cocoa Autolayout. The former is pretty likely to arise if some 
pre-Cocoa Autolayout class had a method called layout, but it should be fixed.! 

error log

¿Qué está causando este problema?

Respuesta

12

Esto se debe al hecho de que la punta que contiene la ventana en la que ha colocado WebView está utilizando la nueva característica Auto Layout, que se presentó en Lion.

Cuando un archivo de punta tiene el diseño automático habilitado, la ventana llamará al método -layout en todos los objetos NSView en la ventana.

Esto causa un problema con WebView porque tenía un método denominado -layout antes de que se añadió el método de la API NSView en León, y layout método WebView 's no entiende el diseño de automóviles.

Probablemente, la mejor solución por el momento es utilizar el antiguo método de máscara de aumento automático para diseñar las vistas en su ventana. Como Xcode ahora crea archivos nib con autolayout habilitado, necesita deshabilitarlo usted mismo.

Puede hacerlo en el inspector de archivos para su archivo de punta, deshabilitando la casilla Use Auto Layout.

interface builder inspector

Después de hacer esto, usted tiene que asegurarse de que todos los puntos de vista en la punta tienen la configuración de tamaño automático correctos en la ficha Tamaño del inspector de vista.

+0

噢 oh, te amo. Gracias. –

3

Tenga en cuenta que puede ignorar con seguridad ese mensaje de registro para WebViews.

0

No estoy seguro sobre el caso de la vista Web, pero si usted está usando alguna clase personalizada (como subclase de UILabel) y está utilizando el método:

  • (void) updateConstraints { }

, entonces definitivamente se bloqueará su aplicación. La mejor solución es eliminar este método y escribir los cambios necesarios en el método 'awakeFromNib'. Espero que esto ayude a alguien más que está recibiendo este choque en clase personalizada.

Cuestiones relacionadas