2013-07-31 5 views
0

J'ai une exigence étaient dans je dois créer une vue pour afficher les pages Web avec le bouton précédent, suivant et actualiser dans l'application iOS. comment implémenter cette fonctionnalité?créer une implémentation de navigateur InApp dans l'application iOS

+0

Vous pouvez utiliser Kendo UI mobile - un framework Javascript et HTML5, qui vous permet de créer des applications natives pour plusieurs plateformes mobiles, y compris iOS. lien: http://www.kendoui.com/mobile.aspx – azimov

Répondre

1

Utilisez UIWebView. Définissez le délégué sur le contrôleur de vue.

self.webView.delegate = self; 

Autres propriétés remarquables,

self.webView.scalesPageToFit = YES; 

Pour charger un URLRequest,

[self.webView loadRequest:theRequest]; 

ou seulement des chaînes, utilisez

[self.webView loadHTMLString:htmlString baseURL:nil]; 

Et certains délégués ici. La vue Web a son propre historique, vous pouvez l'utiliser en appelant ses méthodes d'avance et de retour.

#pragma mark - UIWebView delegate 

// You can handle your own url scheme or let the web view handle it. 
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
     navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"url=%@, %@, %@", 
      request.URL, request.URL.query, request.URL.host); 

    if (navigationType == UIWebViewNavigationTypeLinkClicked) {  
     if ([request.URL.scheme compare:@"customescheme"] == NSOrderedSame) { 
      if ([request.URL.host compare:kSomethingDotCom] == NSOrderedSame) { 
       [self mymethod]; 
      } else if ([request.URL.host compare:kAnotherDotCom] == NSOrderedSame) { 
       [self method2]; 
      } else { 
       NSLog(@"Unsupported service."); 
      } 
      return NO; 
     } 
    } 
    return YES; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [_activityIndicator stopAnimating]; 
} 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    [_activityIndicator stopAnimating]; 
    [Resources showAlert:@"Could not load." withTitle:@"Error!"]; 
    NSLog(@"%@", [error localizedDescription]); 
} 

#pragma mark - Actions 

- (IBAction)didPressBackButton:(id)sender 
{ 
    [_webView goBack]; 
} 

- (IBAction)didPressForwardButton:(id)sender 
{ 
    [_webView goForward]; 
} 

De même, vous pouvez utiliser la méthode d'arrêt. Pour actualiser recharger la demande à nouveau. Avant de revenir en arrière, vous pouvez vérifier les méthodes canGoBack ou canGoForward. Voir les documents à, http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

+0

Bonne réponse, j'ai implémenté les 2 premières méthodes de UIWebViewDelegate, mais rien ne se passe, ces méthodes ne sont pas appelées (j'ai un lien hypertexte dans index.html) , est-ce que tu sais pourquoi? – sAguinaga

+1

Avez-vous défini le délégué, self.webView.delegate = self; ou quelque chose comme ça ... – karim

+0

Voilà, je n'avais pas. Ça fonctionne maintenant! – sAguinaga

0

C'est un jeu d'enfant, tout ce dont vous avez besoin est le composant UIWebview et ses délégués et vous devez créer une barre de navigation personnalisée.

Questions connexes