UI控件(UIWebView)
本文主要记录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)的更多相关文章
- UI控件---UIWebView
UIWebView是内置浏览器控件,可以用来浏览网页,文档等,今天就试着做一个简易的浏览器! 定义url的初始化方法和返回,前进,刷新三个方法,实现UIWebViewDelegate协议 @inter ...
- 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...
- ios 中的UI控件学习总结(1)
UIKit框架提供了非常多功能强大又易用的UI控件 下面列举一些在开发中可能用得上的UI控件 UIButton 按钮 UILabel 文本标签 UITextField 文本输入框 UIImageVie ...
- UI控件概述
常见UI控件 UIKit框架提供了非常多功能强大又易用的UI控件,以便于开发者打造出各式各样的App 以下列举一些在开发中常见的UI控件(稍后补上图片示例) 1.UILabel– 文本标签:作用是显示 ...
- 常用的UI控件
关于本文:作为一名iOS软件工程师,熟练规范的使用常用的UI控件是必备的基础技能. 指示器(UIActivityIndicatorView)----转动的等待小菊花 提醒对话框(UIAlertView ...
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- WinForm/Silverlight多线程编程中如何更新UI控件的值
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...
- 富客户端 wpf, Winform 多线程更新UI控件
前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...
- UI控件(复习一下)
如何修改控件状态• 可见,确实需要经常修改控件状态• 那如何去修改控件的状态呢?方法很简单➢ 每一个UI控件都是一个对象➢ 修改UI控件的状态,其实就是修改控件对象的属性➢ 比如修改UILabel显示 ...
- IOS学习资源收集--开发UI控件相关
收集的一些本人了解过的iOS开发UI控件相关的代码资源(本文持续补充更新) 内容大纲: 1.本人在github上也上传了我分装好的一些可重复利用的UI控件 2.计时相关的自定义UILabel控件 正文 ...
随机推荐
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- 浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)
UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...
- 基于SOUI开发的应用展示
本页面列出基于SOUI开发的产品 欢迎使用SOUI的朋友提供资源:setoutsoft#qq.com #->@ 千万级平台后台在线监测客户端 1, 主页:用于显示管理服务端在线情况,左侧栏包括 ...
- UWP Composition API - GroupListView(二)
还是先上效果图: 看完了上一篇UWP Composition API - GroupListView(一)的童鞋会问,这不是跟上一篇一样的吗??? 骗点击的?? No,No,其实相对上一个有更简单粗暴 ...
- python 面向对象初级篇
Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...
- C++ 代码优化
1.类中所有的属性全部设置为private 然后在需要在外部调用的属性,每个都自己写Get方法返回,或者用Set方法设置 2.类成员变量采用m_前缀,代表类成员 3.采用单例模式 //设置类名为CCo ...
- wpf 切换资源字典的2中方式
var _1200RDUri = new Uri(String.Format(@"/aa;Component/Themes/1200Theme.xaml"), UriKind.Re ...
- 用div加css做表格去掉外围边框
通过div做表格时想加上边框,并且想取点外围边框: <div class="cont"> <div class="row"> <a ...
- 一台电脑安装多个版本的jdk
我们平时在做Java开发的时候,有时需要使用多个版本的jdk, 那么一台电脑上需要安装多个JDK了. 那一台电脑上可不可以同时安装多个版本的jdk呢? 答案是可以的! 但使用的时候,只能使用一个,不能 ...
- 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言
在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...