標籤:
轉自:http://www.cnblogs.com/gcb999/p/3178728.html
架構:webview與js的通訊架構
#import "MJViewController.h"#import "MBProgressHUD+Add.h"@interface MJViewController ()@end@implementation MJViewController- (void)viewDidLoad{ [super viewDidLoad]; [self loadRemoteHTML];}#pragma mark 載入遠端HTML頁面- (void)loadRemoteHTML { NSURL *url = [NSURL URLWithString:@"http://192.168.1.106:8080/MJServer/"]; self.webView.delegate = self; [self.webView loadRequest:[NSURLRequest requestWithURL:url]];}#pragma mark 載入其他檔案- (void)loadRemoteTxt { NSURL *url = [NSURL URLWithString:@"http://192.168.1.106:8080/MJServer/abc.txt"]; self.webView.delegate = self; [self.webView loadRequest:[NSURLRequest requestWithURL:url]];}#pragma mark 載入PDF檔案- (void)loadLocalPDF { //[self.webView loadData:<#(NSData *)#> MIMEType:<#(NSString *)#> textEncodingName:<#(NSString *)#> baseURL:<#(NSURL *)#>]; NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/第10章-網路.pdf"]; self.webView.delegate = self; [self.webView loadRequest:[NSURLRequest requestWithURL:url]];}#pragma mark 載入HTML字串- (void)loadHTMLString { NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Pictures"]; [self.webView loadHTMLString:@"<html><body><img src=‘lufy.png‘></body></html>" baseURL:url];}#pragma mark - webview代理方法- (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"開始載入頁面"); [MBProgressHUD showMessag:@"哥正在幫你載入..." toView:self.view];}- (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"頁面載入完畢"); [MBProgressHUD hideHUDForView:self.view animated:YES]; self.backItem.enabled = self.webView.canGoBack; self.forawrdItem.enabled = self.webView.canGoForward; self.titleItem.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"]; //[self.webView stringByEvaluatingJavaScriptFromString:@"fn();"];}#pragma mark webview每次載入之前都會調用這個方法// 如果返回NO,代表不允許載入這個請求- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // 說明協議頭是ios if ([@"ios" isEqualToString:request.URL.scheme]) { NSString *url = request.URL.absoluteString; NSRange range = [url rangeOfString:@":"]; NSString *method = [request.URL.absoluteString substringFromIndex:range.location + 1]; SEL selector = NSSelectorFromString(method); if ([self respondsToSelector:selector]) { [self performSelector:selector]; } return NO; } return YES;}#pragma mark - 提供一個介面方法給JS調用- (void)openCamera { NSLog(@"開啟了照相機");}- (void)call { NSLog(@"打電話");}#pragma mark - 按鈕方法#pragma mark 前進- (void)forawrd { [self.webView goForward];}#pragma mark 後退- (void)back { [self.webView goBack];}@end
服務端的用法
ios中webview的進階用法