UIwebview avec UIProgressBar

SamhorSamhor Membre
02:50 modifié dans API UIKit #1
Bonjour,
J'affiche une vidéo .mov grave à  une webview qui pointe directement vers le fichier situé sur un serveur web. Tout cela marche parfaitement.

Maintenant j'aimerais que l'utilisateur voit une progress bar qui lui indique le point de chargement de la webview (ex: barre de chargement de safari 3 en bleu^^) cela est mon premier projet le plus important =D Comment faire?

Ensuite si possible j'aimerais qu'une alerte apparaisse à  l'utilisateur si la connexion au serveur par la webview echoue ou que le chargement echoue cela est mon 2ieme projet^^ Comment faire?


Voili Voilou


Merci de vos réponses


Samhor  :p

Réponses

  • apocaalypsoapocaalypso Membre
    02:50 modifié #2
    Pour le premier je sais pas mais pour le deuxième c'est :
    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
    
    en oubliant pas de déclarer le delegate de UIWebView c'est à  dire maWebView.delegate = self;
  • SamhorSamhor Membre
    02:50 modifié #3
    Aufaite voilà  mon code qui ne marche pas avec un UIIndicator
    Code de mon .m concernant IndicatorView
    <br />- (void)webViewDidStartLoad:(UIWebView *)webView {<br />&nbsp; &nbsp; NSLog (@&quot;webViewDidStartLoad&quot;);<br />&nbsp; &nbsp; [activityIndicator startAnimating];<br />}<br /><br />- (void)webViewDidFinishLoad:(UIWebView *)webView {<br />&nbsp; &nbsp; NSLog (@&quot;webViewDidFinishLoad&quot;);<br />&nbsp; &nbsp; [activityIndicator stopAnimating];<br />}<br /><br />- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {<br />&nbsp; &nbsp; NSLog (@&quot;webView:didFailLoadWithError&quot;);<br />&nbsp; &nbsp; [activityIndicator stopAnimating];<br />&nbsp; &nbsp; if (error != NULL) {<br />&nbsp; &nbsp; &nbsp; &nbsp; UIAlertView *errorAlert = [[UIAlertView alloc]<br />								&nbsp;  initWithTitle: [error localizedDescription]<br />								&nbsp;  message: [error localizedFailureReason]<br />								&nbsp;  delegate:nil<br />								&nbsp;  cancelButtonTitle:@&quot;OK&quot; <br />								&nbsp;  otherButtonTitles:nil];<br />&nbsp; &nbsp; &nbsp; &nbsp; [errorAlert show];<br />&nbsp; &nbsp; &nbsp; &nbsp; [errorAlert release];<br />&nbsp; &nbsp; }<br />}<br />
    


    Code de mon .h:
    #import &lt;UIKit/UIKit.h&gt;<br /><br /><br />@interface ViewSupportVersionDesktopSection1 : UIViewController &lt;UIWebViewDelegate&gt;{<br />	IBOutlet UIWebView *webView;<br />	IBOutlet UIActivityIndicatorView *activityIndicator;<br />}<br /><br />@property (nonatomic, retain) IBOutlet UIWebView *webView;<br />@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *activityIndicator;<br /><br /><br /><br />@end
    


    Cela ne marche pas pour je ne sais quel raison et mon objectif sera que ce ne soit pas un activtyIndicatorView qui indique l'activité mais un ProgressBar.
  • Philippe49Philippe49 Membre
    02:50 modifié #4
    Qu'est-ce qui ne marche pas à  l'exécution ?
  • SamhorSamhor Membre
    02:50 modifié #5
    Je ne voit pas L' activityindicator tout simplement j'ai du oublier quelque chose
  • Philippe49Philippe49 Membre
    02:50 modifié #6
    Pour ta question du progressbar , comment formules-tu ta requête ?
  • Philippe49Philippe49 Membre
    juillet 2009 modifié #7
    dans 1247582050:

    Je ne voit pas L' activityindicator tout simplement j'ai du oublier quelque chose

    Bon les connexions :
    • IBoutlet activityIndicator ?
    • Webview delegate

    L'activityIndicator est bien sur le devant par rapport aux autres vues ?

    Le champ activityIndicator.hidden est-il correctement renseigné à  NO : Mettre

    if(! activityIndicator.hidden ) NSLog (@Ok);
  • SamhorSamhor Membre
    02:50 modifié #8
    Donc enfaite l'a j'ai essayé avec le code donné précedemment d'animé un ActivityIndicator mais il ne marche pas..

    Mais ce que j'aimerais c'est mettre un UIProgressBar pour indiquer à  l'utilisateur où en est le chargement de la webview mais je n'est pas encore trouver la manière de coder cela sur web...

    Comment fait on pour savoir si l'activityindicator est bien devant par rapport a la webview dans ma view?
  • Philippe49Philippe49 Membre
    02:50 modifié #9
    Oui j'ai bien compris, mais bon l'activityIndicator c'est du simple de chez simple. Il faudrait savoir le faire fonctionner avant de s'attaquer à  plus gros.
    dans 1247582562:

    Comment fait on pour savoir si l'activityindicator est bien devant par rapport a la webview dans ma view?

    Ouvre le xib sous forme de'outlineView, les vues sont dessinées dans l'ordre.
    Par exemple dans le xib ci-dessous , la deuxième imageview peut masquer la première, l'activityIndicator se dessine par dessus, et il ne faudrait pas que la troisième image view soit au-dessus de l'indicator.

    D'autre part tu ne m'as pas répondu sur les connections. c'est l'oubli le plus courant que l'on rencontre.Ma deuxième image montre la connection de l'IBoutlet.
  • SamhorSamhor Membre
    02:50 modifié #10
    Voila mon ecran IB
  • Philippe49Philippe49 Membre
    02:50 modifié #11
    Ok, et le delegate de la WebView est bien connecté à  l'instance dans le quel se trouve le code que tu as cité ?
    (clic-droit sur la webview et connexion du delegate.)

    Le test du hidden de l'activityIndicator est-il positif ?

  • SamhorSamhor Membre
    02:50 modifié #12
    Oui pour le delegate il est bien relié a l'instance dont j'ai citer le code c sur

    Par contre  j'ai rajouter if(! activityIndicator.hidden ) NSLog (@Ok); dans mon code mais cela n'a pas marché peut tu me dire exactement ou le postiionner car je ne sait pas si je l'est bien mit =D (je suis un debutant)
  • Philippe49Philippe49 Membre
    02:50 modifié #13
    - (void)webViewDidStartLoad:(UIWebView *)webView {<br />&nbsp; &nbsp; if(! activityIndicator.hidden ) NSLog (@&quot;Ok&quot;);;<br />&nbsp; &nbsp; [activityIndicator startAnimating];<br />}
    
  • Philippe49Philippe49 Membre
    02:50 modifié #14
    Ce serait pas une histoire à  la .. du style l'activity Indicator est blanc dessiné sur du blanc ?
  • SamhorSamhor Membre
    02:50 modifié #15
    Justement j'y est penser j'ai pris le gray indicator et non pas le white^^

    En tout cas cela ne marche toujours pas :s et cela doit etre pour un tout petit truc :s
  • Philippe49Philippe49 Membre
    02:50 modifié #16
    Ci-joint un exemple simplissime .. qui tourne
  • Philippe49Philippe49 Membre
    02:50 modifié #17
    Pour l'autre partie, tu utilises quoi comme système de chargement ? le MediaPlayer framework ? ou simplement tu charges des pages web ?


  • SamhorSamhor Membre
    02:50 modifié #18
    Simple webview qui pointe vers un lien du genre:
    http://mondomaine.com/mavideo.mov
    Enfaite ca met une page blanche et 3 sec après y'a quicktime iphone qui se lance (un peu comme quand tu clic sur un lien video dans l'appli youtube.

    Il vaudrait mieu utiliser une autre méthode?? (si elle est plus rapide que de passer dans view dans laquel est ma webview je veux bien =D)


    Pour Infos enfaite mon but j'ai un table view puis je clic sur une cellule qui me lance la video via la view qui contien une webview.
    C vrai que si on pouvait faire en sorte que quand le mec clic sur la cellule cela ouvre directement le mediaplayer a partir d'une video heberger sur le web :D
  • Philippe49Philippe49 Membre
    juillet 2009 modifié #19
    Bon après un test, NSURLConnection fonctionne avec le simulateur, sans doute avec le device, ce qui permet d'avoir les informations du data au fur et à  mesure que le client le reçoit.

    Une étude sur le sujet, mais il y a peut être mieux, notamment dans le MediaPlayer framework.



    Mise en garde de la référence de NSURLResponse

    Important: This is a Mac OS X document for an API or technology that is shared between Mac OS X and iPhone OS. Although this document has been reviewed for technical accuracy on Mac OS X, it has not been reviewed for accuracy on iPhone OS and may contain errors or omissions. Apple is supplying this information to help you plan for the adoption of the technologies and programming interfaces described herein. This information is subject to change, and software implemented according to this document should be tested with final operating system software and final documentation. Newer versions of this document may be provided with future seeds of the API or technology.


Connectez-vous ou Inscrivez-vous pour répondre.