ios 开发之 原生+html5混合开发 [[ 方法互调 ]]


一原生应用修改 html


原生应用调用 js代码还是比较简单的,就是借助 UIWebView 的代理方法.

首先,加载 index.html
- ( void )viewDidLoad
{
    [superviewDidLoad];
     NSURL *url = [[ NSBundle mainBundle ] URLForResource : @"index" withExtension : @"html" ];
    
NSURLRequest *request = [ NSURLRequest requestWithURL :url];
    [
self . webView loadRequest :request];
}
其次,实现 webView 代理
- ( void )webViewDidFinishLoad:( nonnull UIWebView *)webView
{
  //当加载完成的时候就可以修改 html 的内容
  //比如获取 img,p,button 等标签
  NSString *str = @"var img = document.getElementsByTagName('img')[0];" ;
  // 增删改查等
  NSString *str1 = @" img .remove();" ;
  //最主要的方法,通过此方法,就可以修改加载的页面啦
  [webView stringByEvaluatingJavaScriptFromString :str];
  [webView stringByEvaluatingJavaScriptFromString:str1];
}


二.html 调用原生方法 

通过此方法,就可以达到调用系统资源的目的,比如相册,相机等

首先,在 index.html 中添加单机事件

 

    
charset = "UTF-8" >
 

 

      onclick="btnClick ();"> 访问相册
     
 
接着,在 viewDidLoad里加载index.html
- ( void )viewDidLoad
{
    [
super viewDidLoad ];
   
  
  NSURL *url = [[ NSBundle mainBundle ] URLForResource : @"index" withExtension : @"html" ];
  
  NSURLRequest *request = [ NSURLRequest requestWithURL :url];
    [
self . webView loadRequest :request];
}
//实现代理
- ( BOOL )webView:( nonnull UIWebView *)webView shouldStartLoadWithRequest:( nonnull NSURLRequest *)request navigationType:( UIWebViewNavigationType )navigationType
{
   
NSString *url = request. URL . absoluteString ;
   
NSRange range = [url rangeOfString : @"lyl://" ];
    NSUIntegerlocation = range.location;

    if (location != NSNotFound )
   {
        //将url 处理得到方法名 btnClick'
         NSString *str = [url substringFromIndex :location + range. length ];
        //转换成方法,然后调用

       
  SEL sel = NSSelectorFromString (str);
        [
self performSelector :sel withObject : nil ];
    }
    return YES
}
//实现方法
-(void) btnClick
{
    NSLog ( @“我点,我点" );
}

你可能感兴趣的:(技术方法)