2010-05-18 8 views
5

webview in core animation layerSuperposition de Cocoa WebView - Dessiner par dessus?

Le seul autre fil que je peux trouver est ce qui précède qui ne correspond pas nécessairement à mes besoins. Existe-t-il un moyen fiable de dessiner simplement une vue sur un webview? J'ai essayé de superposer un NSView régulier au dessus de WebView, et il dessine tout de suite, mais tout mouvement dans le webview (défilement de la page etc) semble invalider la vue et produit des artefacts visuels.

J'ai essayé:

[[[NSApp mainWindow] contentView] addSubview:view positioned:NSWindowAbove relativeTo:webView]; 

Pas de chance là, mêmes problèmes - z-commande ne semble pas fonctionner à moins que je me manque quelque chose.

Est-ce juste une limitation de webviews?

J'ai également essayé d'implémenter la vue ci-dessus comme une fenêtre, qui fonctionnait beaucoup mieux (juste contrôlé l'emplacement de la fenêtre par programme). Cependant, le comportement souhaité est pour l'utilisateur d'entrer du texte dans cette fenêtre, mais pour ne pas voler "focus" - ie la fenêtre principale devient inactive (le x - + va gris) quand l'utilisateur clique sur le champ de texte dans la nouvelle fenêtre Un moyen d'éviter cela?

J'ai essayé de sous-classer NSWindow et de surcharger canBecomeKey (retourner YES) et canBecomeMain (retourner NO) mais la fenêtre vole encore le focus.

EDIT: Je pleure :-(Je n'arrive pas à trouver un moyen de contourner le truc de webkit, d'un autre côté, j'ai trouvé un moyen de forcer la fenêtre principale de mon application à conserver son état actif Même si vous avez une fenêtre contextuelle avec l'état de la clé, cela a des conséquences inattendues lorsque vous utilisez l'entrée de texte dans la boîte de dialogue contextuelle (qui doit être forcée dans l'état de la fenêtre clé). , et les événements de la souris ne se font pas distribués aux vues webkit ci-dessous (pour mouseovers sur les composants intégrés dans le code html). craptacular.

Josh

+0

Avez-vous essayé d'ajouter votre vue en tant que sous-vue de la vue Web? –

+0

Non cela ne fonctionne pas non plus – strange

Répondre

2

Un peu en retard, mais je me cognaient la tête au même problème et deux ans après le q Je n'ai toujours pas trouvé la réponse. Dans mon cas, la définition de wantLayer = YES sur la vue que je voulais dessiner sur WebView a résolu le problème.

+0

Cela a fonctionné pour moi aussi, merci! – starkos

Questions connexes