NSDocument et impression de WebView
AP
Membre
Bonjour,
Je cherche à imprimer le contenu d'une webview dans une appli "Document".
J'ai donc utilisé la méthode
- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
error:(NSError **)e
mais problème la webview n'est pas forcément fini de chargé à ce moment là .
Comment puis-je attendre
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
que le chargement soit fini au sein de la fonction printOperationWithSettings (qui doit renvoyer une NSPrintOperation valide.
Merci pour votre aide.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ben il faut mettre le print dans la méthode de délégué que tu as cité.
Merci pour ta réponse. Ok, mais comment je fais pour attendre que tout soit pret pour renvoyer un printoperation correct dans la première?
Merci
AP, par curiosité j'ai cliqué sur le lien dans ta signature. Cela pointe sur une application Mac App Store NON présente sur le Store français ! Pourquoi garder ça dans ta signature ?
Ah oui c'est très bête ca, je vais mettre ca à jour tout de suite. Merci.
Question bête, j'ai essayé de faire un tel truc avec une run loop mais je rien ne fonctionne. Comment ferais-tu pour attendre le changement de valeur du booléen sans bloquer?
Merci pour ton aide.
La methode printOperationWithSettings retourne une valeur de façon synchrone, donc soit tu bloques pour attendre jusqu'à ce que ce soit chargé, ce qui est une mauvaise idée car ça va tout bloquer, soit tu fais autrement.
En fait je pense que tu n'abordes pas le problème du bon angle. La question n'est pas comment attendre dans la methode printOperation tant que la page n'est pas chargée, mais comment empêcher que printOperation ne soit appelé / empêcher que l'utilisateur demande d'imprimer avant que la page ne soit chargée.
La réponse est alors simple : il suffit de griser/désactiver l'article de menu "Imprimer" jusqu'à ce que la methode de delegate de la WebView ait été appelée.
en fait je veux attendre car la webview ne contient que le rendu du document. La création du document elle, est gérée dans une autre vue (non imprimable).
Du coup dans méthode print operation je lance le rendu (chargement dans la webview), qui est quasi instantané (mais nécessite quand même une petite attente)