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 中添加单机事件
<html>
 
<head>
    
<meta charset = "UTF-8" >
 
</head>
 
<body>
      <button onclick="btnClick ();"> 访问相册 </button>
      <script>
         
function btnClick (){
             window.location.href =' lyl:// btnClick ';
          }
      </script>
 
</body>
</html>
接着,在 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 ( @“我点,我点" );
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值