UIWebView

IOS系统提供了 UIWebView 控件,从而可以方便地集成与网页相关的多种应用,该控件内置浏览器控件,可以用来浏览网页、打开文档等等。

 

一、UIWebView 可以加载和显示某个URL的网页,也可以显示基于HTML的本地网页或部分网页:

a. 加载 URL

  1. WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)];   
  2. NSString *path = @"http://www.baidu.com";   
  3. NSURL *url = [NSURL URLWithString:path];   
  4. [WebView loadRequest:[NSURLRequest requestWithURL:url]];   

b. 加载 HTML

NSBundle *bundle = [NSBundle mainBundle];
NSString *resPath = [bundle resourcePath];
NSString *filePath = [resPath stringByAppendingPathComponent:@"Home.html"];
[webView loadHTMLString:[NSString stringWithContentsOfFile:filePath]
  baseURL:[NSURL fileURLWithPath:[bundle bundlePath]]];

二、使用网页加载指示,加载完成后再显示网页出来

    首先要指定委托方法:

       webView.delegate =self; 

    UIWebView主要有下面几个委托方法:

      1、- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。
      2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。
      3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行该方法。

     这样,可以利用 webViewDidStartLoad 和 webViewDidFinishLoad 方法实现本功能:        

  1. - (void) webViewDidStartLoad:(UIWebView *)webView  
  2. {  
  3.     //创建UIActivityIndicatorView背底半透明View        
  4.     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];    
  5.     [view setTag:108];    
  6.     [view setBackgroundColor:[UIColor blackColor]];    
  7.     [view setAlpha:0.5];    
  8.     [self.view addSubview:view];    
  9.       
  10.     activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];    
  11.     [activityIndicator setCenter:view.center];    
  12.     [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];    
  13.     [view addSubview:activityIndicator];    
  14.   
  15.     [activityIndicator startAnimating]; 
  16. }
  17. - (void) webViewDidFinishLoad:(UIWebView *)webView  
  18. {  
  19.     [activityIndicator stopAnimating];  
  20.     UIView *view = (UIView*)[self.view viewWithTag:108];  
  21.     [view removeFromSuperview];  
  22.     NSLog(@"webViewDidFinishLoad");  
  23. }  

三、UIWebView还可以通过 stringByEvaluatingJavaScriptFromString 函数来执行 javascript代码,从而可以更加灵活地处理网页文件

  1. 获得UIWebView的标题
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];

  2. 获取页面的URL

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];

  3. 修改页面元素的值

NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];

  4. 表单提交

NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]

 

四、综合运用以上方法,还可以实现部分网页的显示,基本思路如下:

    1. 用 loadRequest 先获取网页,但先设置 UIWebView.hidden = YES;

    2. 在 webViewDidFinishLoad 中,用

NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x('xxxx').innerHTML; "] 获取指定标签元素的HTML代码
3. 再使用 loadHTMLString 加载该HTML代码,即可

转载于:https://www.cnblogs.com/mumoozhu/p/4582814.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库设计-基础-1-教务科研申报系统设计UML用例图

根据系统角色能够观察到的系统功能来画出用例图 系统角色划分参考附录 教师角色用例图科研秘书用例图科研处工作人员用例图科研系统管理员用例图校领导用例图附录: 教师:教师可以登录科研系统,查看自己所主持或参加的科研项目,并且…

【02】CC - 有意义的命名

为什么80%的码农都做不了架构师?>>> 1、提防使用不同之处较小的名称 XYZControllerForEfficientHandlingOfStrings 与 XYZControllerForEfficientStorageOfStrings 在IDE下,都有自动补全,这种细微的差别,容易补全错&a…

linux7 语言包,Centos 7中文语言包的安装及中文支持

1、修改配置文件etc/locale.confLANG"zh_CN.UTF-8"2、查看更改后的系统语言变量[root5c46832b5c01 ~]# localelocale: Cannot set LC_CTYPE to default locale: No such file or directorylocale: Cannot set LC_MESSAGES to default locale: No such file or direct…

如何在构建docker镜像时执行SonarQube扫描.NET Core应用

前言SonarQube是一款静态代码质量分析工具,它常用于检测代码中的Bug、漏洞和代码异味,并且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。一般情况下,我们在Jenkins管道中配置SonarQube,在编译过…

Android之JNI DETECTED ERROR IN APPLICATION: illegal class name ‘XXX‘的错误解决方法

1、问题 JNI DETECTED ERROR IN APPLICATION: illegal class name com.example.chenyu.test.JniClient 2、原因 我在jni里面,写成这样了 (*env)->FindClass(env, "com.example.chenyu.test.JniClient");特么我把包名写成.xx.xx.xx了 3、解决办法 把…

Php与mssql数据交互

Php在5.3版本之后与mssql交互发生变化,原先的mssql函数系统不再支持,改用微软提供的sqlsrv函数,使用sqlsrv函数需要用到微软提供的动态函数库SQL Server Driver for PHP。 从微软官方网站下载函数库,然后在php.ini文件中加载函数库…

Win10系列:VC++ Direct3D模板介绍1

Visual Studio为开发Direct3D应用程序提供了便捷的模版,读者可以不必手动去新建Direct3D中所使用到的基础资源,而只需专注于图形的绘制。本小节主要为读者介绍这个模版中用于绘制图形的主要函数及其功能,为了能让读者更为清楚地了解如何使用此…

linux+arch系统下载,Linux

大小: 695MB更新时间:2021-02-04适用电脑:系统盘大于20G超过1GMHz的处理器最佳64位处理器Arch Linux是一份独立开发的、为i686优化的Linux发行,它面向高级Linux用户。它使用自行开发的包管理器pacman来为最新的应用软件提供 更新升…

Android---AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作

AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某项操作(…

C# 实例解释面向对象编程中的里氏替换原则

在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集,在他2000年的论文《设计原则与设计模式》中首次提出…

Android之error: void value not ignored as it ought to be(In function ‘callMethod2‘)解决办法

1、问题 chenyu@chenyu:~/Android_dev/Test/app/jni$ ndk-build [armeabi] Compile thumb : FirstJni <= JniClient.c /home/chenyu/Android_dev/Test/app/jni/JniClient.c: In function callMethod2: /home/chenyu/Android_dev/Test/app/jni/JniClient.c:74:18: error: vo…

JavaScript面向对象-静态方法-私有方法-公有方法-特权方法,学习

var baseClass function(){function show(){//私有方法alert("访问私有方法");}function showName(){alert(this.name);}this.showw function (){//特权方法showName();} } //静态方法 baseClass.showStatic function(){alert("访问静态方法"); }//公有方…

linux docker nginx,CentOS7上Docker简单安装及nginx部署

安装如果原来安装过docker&#xff0c;先把原来的删掉&#xff0c;再安装(如果是首次安装docker忽略第一步&#xff0c;直接在第二步看起)1.1先查看下已经安装了那些dockeryum list installed | grep docker查看结果docker.x86_64 2:1.13.1-94.gitb2f74b2.el7.centosdocker-cli…

linux下的常用命令

一、Linux、CentOS下重命名文件和文件夹 mv&#xff1a;move 用移动文件命令就可以了&#xff0c;因为linux系统没有专门的重命名命令。 基本格式&#xff1a; 移动文件&#xff1a;mv 文件名 移动目的地文件名 重命名文件&#xff1a;mv 文件名 修改后的文件名 示例&#xff1…

Android之JNI ERROR (app bug): accessed stale global reference 0xb39533f2 (index 19708 in a table of s

1、问题 2、原因 我在jni里面是这样写的 (*env)->CallVoidMethod(env, obj, method3, "chenyu"); 3、解决办法 把这个 (*env)->CallVoidMethod(env, obj, method3, "chenyu"); 改为这个 (*env)->CallVoidMethod(env, obj, method3, (*env)-&g…

Nim教程【十二】

排除指定符号 一般情况下使用import语句&#xff0c;会把一个模块内的符号都导入进来 如果你像排除特定的符号&#xff08;不想让某些符号被导入进来&#xff09; 可以使用except子句 就像下面这样 import mymodule except y 这行代码排除了mymodule模块中的y符号&#xff0c;其…

工业互联网的最后一公里

最后一公里&#xff0c;出自中国共产党十八大以来的新名词之一&#xff0c;指政策始终“走在路上”&#xff0c;服务始终“停在嘴上”&#xff0c;实惠没有真正“落在身上”的“末梢堵塞”问题。要让人民群众真正得实惠&#xff0c;就要切实解决好“最后一公里”问题。1、移动互…

Android 编程下设置 Activity 切换动画

为 Activity 设置切换动画 我们知道&#xff0c;我们可以在 AndroidManifest.xml 文件中&#xff0c;通过 android:theme 属性设置 Activity 的主题。主题中定义了关于 Activity 外观的很多特性。同时&#xff0c;主题中还可以定义 Activity 的切换动画。这是应用 Activity 切换…

Android之jni调用java函数总结

1、先看之前jni的如何实现动态注册 先看我之间的例子 http://blog.csdn.net/u011068702/article/details/71375920 Android之JNI动态注册native方法和JNI数据简单使用 因为这里演示的jni调用java函数是基于这个例子改的,然后还有如何在jni里面加上日志可以看这篇博客 http…

linux nfs 无法写入,无法写入挂载点(nfs-server),获得“权限被拒绝”

root_squash — Prevents root users connected remotely from having rootprivileges and assigns them the user ID for the user nfsnobody. Thiseffectively “squashes” the power of the remote root user to the lowestlocal user,preventing unauthorized alteration …