[iOS]在WebApp中如何使用JS调用iOS的函数
            时间:2014-06-20 11:28:48  
            收藏:0  
            阅读:267
        
        
        实现功能:点击HTML的标签,通过JS调用iOS内部的原生函数
基本流程:
先看一下Web中,我们给h1标签添加一个onclick事件,让它在被点击之后,修改当前的url。
Web中的HTML代码:
<html>
<head>
<script>
function getInfo(name)
{
	window.location = "/getInfo/"+name;
}
</script>
</head>
<body>
	<h1 onclick="getInfo(‘why‘)">Name</h1>
</body>
</html>iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。
也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,
用这种方式可以巧妙地实现JS调用iOS的原生代码:
//
//  DWViewController.m
//  DareWayApp
//
//  Created by why on 14-6-3.
//  Copyright (c) 2014年 DareWay. All rights reserved.
//
#import "DWViewController.h"
@interface DWViewController ()
@property (weak, nonatomic) IBOutlet UIWebView *myWebview;  // 主页面
@end
@implementation DWViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    
    
    // 适配iOS6的状态栏
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        _myWebview.frame =  CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-20);
    }
    
    
    // 加载制定的URL
    NSURL *url =[NSURL URLWithString:@"http://localhost"];
    NSURLRequest *request =[NSURLRequest requestWithURL:url];
    [_myWebview setDelegate:self];
    [_myWebview loadRequest:request];
}
// 网页中的每一个请求都会被触发
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
      
    // 每次跳转时候判断URL
    
    if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/why"])
    {
        NSLog(@"why");
        return NO;
    }
    
    
    return YES;
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
            评论(0)
        
        
        