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控件 正文 ...
随机推荐
- ORA-12541:TNS没有监听器
cmd---services.msc----以Oracle开头TNListener结尾的服务启动它 如果还没有启动,修改注册表,Win+r,输入regedit回车,找到HKEY_LOCAL_MACHI ...
- ppmoney 总结一
1.JQ $.get() <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Android 如何判断一个应用在运行(转)
Android 如何判断一个应用在运行 在一个应用中,或一个Service .Receiver中判断一个应用是否正在运行,以便进行一些相关的处理. 这个时候我们需要得到一个ActivityManag ...
- WPF中使用DynamicResource实现换肤
这篇将介绍使用DynamicResource实现动态的界面切换功能.熟悉WPF的园友应该已经猜到了实现方式,简而言之就是动态替换DataTemplate,ControlTemplate,Style等等 ...
- JDBC
<java连接数据库> Class.forName("com.mysql.jdbc.Driver")--1:加载驱动 Connection conn=DriverMan ...
- 2015 ACM/ICPC EC-Final
A. Boxes and Balls 二分找到最大的不超过$n$的$\frac{x(x+1)}{2}$形式的数即可. #include <bits/stdc++.h> using name ...
- WebViewJavascriptBridge使用说明(iOS)
由于现在很多产品都是有安卓版跟ios版,就意味着同一样东西要出两套,由两组人去完成,不仅增加了开发成本,也大大加剧了维护成本.聪明的coder想出了跨平台的思路,用html写页面,分别用webview ...
- ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS Memory Limit:65536KB 64bit IO Fo ...
- 我的前端故事----Ajax方式和jsonp的实现区别
很久没有更新博客了,毕业2个月了,这段时间一直在忙于工作,一直没有时间更新,最近做的活动突然发现之前的经验居然忘记了...索性想想还是重新开始用博客记录平日里的工作经验吧,吐槽就到这里了,这篇记录的是 ...
- C# SQL 面试题自我总结
1,asp.net单点登录机制 2,多线程同步机制 3,写一个冒泡排序算法 4,写一个递归算法 5,字符串反转 字符串分隔后调用reverse 方法. 6,sql 中ID自动增长,查询31到40条记录 ...