2013-07-31 66 views
0

我有一個要求是我必須創建一個視圖以在iOS應用程序中顯示帶有後退,前進和刷新按鈕的網頁。 如何實現這個功能?在iOS應用程序中創建一個InApp瀏覽器實現

+0

您可以使用Kendo UI mobile - 一個Javascript和HTML5框架,它允許您爲幾個移動平臺(包括iOS)創建本機外觀應用程序。鏈接:http://www.kendoui.c​​om/mobile.aspx – azimov

回答

1

使用UIWebView。 將委託設置爲視圖控制器。

self.webView.delegate = self; 

其他顯着的特性,

self.webView.scalesPageToFit = YES; 

要加載一個URLRequest,

[self.webView loadRequest:theRequest]; 

或僅用於字符串,使用

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

一些代表在這裏。 Web視圖有其自己的歷史記錄,您可以通過調用其後退和前進方法來使用它。

#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]; 
} 

同樣,你可以有停止方法。刷新重新加載請求。在前進或後退之前,您可以檢查canGoBack或canGoForward方法。 查看文檔http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

+0

偉大的答案,我從UIWebViewDelegate實現了前兩種方法,但沒有發生,這些方法不被調用(我在index.html中有一個超鏈接) , 你知道爲什麼嗎? – sAguinaga

+1

您是否設置了委託,self.webView.delegate = self;或者像這樣的東西... – karim

+0

就是這樣,我沒有。它現在有效! – sAguinaga

0

這是一塊蛋糕,所有你需要的是UIWebview組件及其代表,你需要創建一個自定義的導航欄。

相關問題