2010-02-10 4 views
1

J'ai un NSView simple qui héberge un WebView.WebKit ne s'affichera pas sur une vue sauvegardée en couches

Lorsque j'essaie de restaurer le calque d'affichage, le WebView arrête le rendu du contenu - tout ce qu'il restitue sont les barres de défilement.

Par souci de simplicité, j'ai ajouté le code suivant à la méthode applicationDidFinishLaunching du délégué de l'application d'un tout nouveau projet Xcode: -

NSView* view = [window contentView]; 

[view setWantsLayer:YES]; // This is the problematic line! 

WebView* webView = [[WebView alloc] initWithFrame:NSMakeRect(0,0,400,400)]; 
WebFrame* mainFrame = [webView mainFrame]; 
[view addSubview:webView]; 
[mainFrame loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]]; 

Si je laisse de setWantsLayered le WebKit rend la page Web. Si je le mets, WebKit rend juste un carré blanc avec des barres de défilement.

+0

addSubView devrait être addSubview – DenNukem

Répondre

3

Les WebView sauvegardés en couche ne sont pas pris en charge. Des notes de version de Leopard:

La plupart des vues et des contrôles standard que les autres cadres de cacao AppKit et Mac OS X fournissent sont capables de fonctionner en mode soutenu par couche dans Leopard, à l'exception de certaines vues spécialisées telles que WebView WebViews et QCViews Quartz Composer, dont l'utilisation en mode protégé par couche n'est actuellement pas prise en charge.

(http://developer.apple.com/mac/library/releasenotes/cocoa/AppKitOlderNotes.html#Animation - dernier paragraphe de la section "Nouveaux Voir installations d'animation, et couche-Backed Voir Dessin")

Vous devez déposer un bug avec Apple et rdar de référence: // 5.270.371 que l'on trouve dans ce liste de diffusion post http://lists.apple.com/archives/Webkitsdk-dev/2007/Dec/msg00042.html.

1

Cela semble maintenant fonctionner. Je viens d'essayer le même code sur Mountain Lion et tout va bien.

+0

Même ici, j'ai été surpris de lire que ce n'est pas supporté. – Vojto

Questions connexes