本文主要记录UIWebView三方面内容:

1、基本的加载网页链接或文件;

2、网页js调用原生,也就是Cordova混合架构的原理;

3、原生调用js程序;

  • 原生部分主要代码:
@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad]; self.title = @"WebView Test"; webview_ = [[UIWebView alloc]init];
webview_.frame = self.view.bounds; webview_.delegate = self; //自动缩放页面
webview_.scalesPageToFit = YES; //webview提供的导航方法如下:
// [webView_ goBack];
// [webview_ goForward];
// [webview_ reload];
// [webview_ stopLoading]; [self.view addSubview:webview_];
} -(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear");
// 加载普通URL
// NSURL* url;
// http请求需要在info.plist信息中增加如下配置:
// <key>NSAppTransportSecurity</key>
// <dict>
// <key>NSAllowsArbitraryLoads</key>
// <true/>
// </dict>
// url = [[NSURL alloc]initWithString:@"http://www.baidu.com/"];
// [webview_ loadRequest:[NSURLRequest requestWithURL:url]]; [self loadHTMLFile:@"hello.html"]; } //加载一个本地html
- (void)loadHTMLFile:(NSString*)filename {
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@""];
NSData* data = [NSData dataWithContentsOfFile:path];
[webview_ loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:nil];
} //javascript调用原生方法,也是Cordova混合架构的原理
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"shouldStartLoadWithRequest");
NSString *url = request.URL.absoluteString;
NSLog(@"%@", url);
if([url hasSuffix:@"iostest"]){
return NO;
}
return YES;
} - (void)webViewDidFinishLoad:(UIWebView *)webView {
//执行javascript语句
NSLog(@"webViewDidFinishLoad");
NSString *js = @"test2('hello')";
[webview_ stringByEvaluatingJavaScriptFromString:js];
} @end
  • 网页部分
<html>
<head>
<script type="text/javascript">
var iFrame;
iFrame = document.createElement('iframe');
iFrame.style.display = 'none';
document.documentElement.appendChild(iFrame);
//创建一个iFrame,并修改其src,此时IOS中的shouldStartLoadWithRequest会被回调 function test1(){
iFrame.src = "iostest";
} function test2(input){
alert(input);
} </script>
</head> <body>
<p>This is Test Page.</p>
<button onclick="test1()">hello</button>
</body>
</html>

UI控件(UIWebView)的更多相关文章

  1. UI控件---UIWebView

    UIWebView是内置浏览器控件,可以用来浏览网页,文档等,今天就试着做一个简易的浏览器! 定义url的初始化方法和返回,前进,刷新三个方法,实现UIWebViewDelegate协议 @inter ...

  2. 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

    转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...

  3. ios 中的UI控件学习总结(1)

    UIKit框架提供了非常多功能强大又易用的UI控件 下面列举一些在开发中可能用得上的UI控件 UIButton 按钮 UILabel 文本标签 UITextField 文本输入框 UIImageVie ...

  4. UI控件概述

    常见UI控件 UIKit框架提供了非常多功能强大又易用的UI控件,以便于开发者打造出各式各样的App 以下列举一些在开发中常见的UI控件(稍后补上图片示例) 1.UILabel– 文本标签:作用是显示 ...

  5. 常用的UI控件

    关于本文:作为一名iOS软件工程师,熟练规范的使用常用的UI控件是必备的基础技能. 指示器(UIActivityIndicatorView)----转动的等待小菊花 提醒对话框(UIAlertView ...

  6. ANDROID L——Material Design详解(UI控件)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  7. WinForm/Silverlight多线程编程中如何更新UI控件的值

    单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...

  8. 富客户端 wpf, Winform 多线程更新UI控件

    前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...

  9. UI控件(复习一下)

    如何修改控件状态• 可见,确实需要经常修改控件状态• 那如何去修改控件的状态呢?方法很简单➢ 每一个UI控件都是一个对象➢ 修改UI控件的状态,其实就是修改控件对象的属性➢ 比如修改UILabel显示 ...

  10. IOS学习资源收集--开发UI控件相关

    收集的一些本人了解过的iOS开发UI控件相关的代码资源(本文持续补充更新) 内容大纲: 1.本人在github上也上传了我分装好的一些可重复利用的UI控件 2.计时相关的自定义UILabel控件 正文 ...

随机推荐

  1. ExtJs基础知识总结:Dom、IFrame和TreePanel、TabPanel(三)

    概述 ExtJs是另外一种操作封装JavaScript的类库与Jquery同类.所以对Dom的操作也是支持的,比如修改Div内Html内容等操作.有几个问题需要思考下: 1.ExtJs也支持IFram ...

  2. Microsoft VS 2008 过期解决方法破解方法

    Microsoft VS 2008 过期解决方法电脑上的Microsoft Visual Studio 2008 Team System 试用版提示离过期还有**天.于是百度,搜索结果大多是以下两种解 ...

  3. CSV文件分割与列异常处理的python脚本

    csv文件通常存在如下问题: 1. 文件过大(需要进行文件分割)2. 列异常(列不一致,如元数据列为10列,但csv文件有些行是11列,或者4列)本脚本用于解决此问题. #coding=utf-8 ' ...

  4. AndroidStudio导入项目出现Your project path contains non-ASCII characters错误

    Your project path contains non-ASCII characters. This will most likely cause the build to fail on Wi ...

  5. Android Studio 引用 gson-2.6.2-sources

    1.拷贝到libs下

  6. 更改pip安装源的镜像解决安装总是timeout的情况

    由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...

  7. spring 定时任务配置

    1.(易)如何在spring中配置定时任务? spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 (程序中一般我们都是到过写的,直观些) 1.定义任务 < ...

  8. Java实现操作dos命令

    java实现操作dos命令的两种方式 1.读取文件中的命令 package com; import java.io.InputStream; public class cmd { public sta ...

  9. redhat6下安装Lighttpd1.4.43

    学完了C语言,自信满满地冲着开源软件去了,首选了Lighttpd,这个软件代码量不多,适合初入开源的朋友 redhat下安装Lighttpd,一定要先安装依赖库,pcre和bzip2,这两个自行下载, ...

  10. 在 Delphi 中判断一个字符是中文的方法

    http://blog.163.com/l1_jun/blog/static/143863882011741124581/ 由于 Delphi2005 支持中文标识符,在编写 PASCAL 词法分析器 ...