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

本文详细介绍了原生应用如何通过UIWebView加载并修改HTML内容,以及如何从HTML调用原生应用的方法,实现系统资源的交互。通过具体代码示例,展示了如何在iOS应用中实现与HTML页面的动态交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一原生应用修改 html


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

首先,加载 index.html
- (void)viewDidLoad
{
    [superviewDidLoad];
    NSURL*url = [[NSBundlemainBundle]URLForResource:@"index"withExtension:@"html"];
    
NSURLRequest *request = [NSURLRequestrequestWithURL:url];
    [
self.webViewloadRequest:request];
}
其次,实现 webView 代理
- (void)webViewDidFinishLoad:(nonnullUIWebView*)webView
{
  //当加载完成的时候就可以修改 html 的内容
  //比如获取 img,p,button 等标签
  NSString*str = @"var img = document.getElementsByTagName('img')[0];";
  //增删改查等
  NSString*str1 = @"img.remove();";
  //最主要的方法,通过此方法,就可以修改加载的页面啦
  [webViewstringByEvaluatingJavaScriptFromString: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
{
    [
superviewDidLoad];
   
  
  NSURL *url = [[NSBundlemainBundle]URLForResource:@"index"withExtension:@"html"];
  
  NSURLRequest *request = [NSURLRequestrequestWithURL:url];
    [
self.webViewloadRequest:request];
}
//实现代理
- (BOOL)webView:(nonnullUIWebView*)webView shouldStartLoadWithRequest:(nonnullNSURLRequest*)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];
        //转换成方法,然后调用

       
 SELsel = NSSelectorFromString(str);
        [
selfperformSelector:selwithObject:nil];
    }
    return YES
}
//实现方法
-(void)btnClick
{
    NSLog(@“我点,我点");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值