ios中webview的高级用法(二)
webview与js的通信框架
- #import "MJViewController.h"
- #import "MBProgressHUD+Add.h"
- @interface MJViewController ()
- @end
- @implementation MJViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- [self loadRemoteHTML];
- }
- #pragma mark 加载远程的HTML页面
- - (void)loadRemoteHTML {
- NSURL *url = [NSURL URLWithString:@"http://192.168.1.106:8080/MJServer/"];
- self.webView.delegate = self;
- [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
- }
- #pragma mark 加载其他文件
- - (void)loadRemoteTxt {
- NSURL *url = [NSURL URLWithString:@"http://192.168.1.106:8080/MJServer/abc.txt"];
- self.webView.delegate = self;
- [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
- }
- #pragma mark 加载PDF文件
- - (void)loadLocalPDF {
- //[self.webView loadData:<#(NSData *)#> MIMEType:<#(NSString *)#> textEncodingName:<#(NSString *)#> baseURL:<#(NSURL *)#>];
- NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/第10章-网络.pdf"];
- self.webView.delegate = self;
- [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
- }
- #pragma mark 加载HTML字符串
- - (void)loadHTMLString {
- NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Pictures"];
- [self.webView loadHTMLString:@"<html><body><img src='lufy.png'></body></html>" baseURL:url];
- }
- #pragma mark - webview代理方法
- - (void)webViewDidStartLoad:(UIWebView *)webView {
- NSLog(@"开始加载页面");
- [MBProgressHUD showMessag:@"哥正在帮你加载..." toView:self.view];
- }
- - (void)webViewDidFinishLoad:(UIWebView *)webView {
- NSLog(@"页面加载完毕");
- [MBProgressHUD hideHUDForView:self.view animated:YES];
- self.backItem.enabled = self.webView.canGoBack;
- self.forawrdItem.enabled = self.webView.canGoForward;
- self.titleItem.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];
- //[self.webView stringByEvaluatingJavaScriptFromString:@"fn();"];
- }
- #pragma mark webview每次加载之前都会调用这个方法
- // 如果返回NO,代表不允许加载这个请求
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
- // 说明协议头是ios
- if ([@"ios" isEqualToString:request.URL.scheme]) {
- NSString *url = request.URL.absoluteString;
- NSRange range = [url rangeOfString:@":"];
- NSString *method = [request.URL.absoluteString substringFromIndex:range.location + ];
- SEL selector = NSSelectorFromString(method);
- if ([self respondsToSelector:selector]) {
- [self performSelector:selector];
- }
- return NO;
- }
- return YES;
- }
- #pragma mark - 提供一个接口方法给JS调用
- - (void)openCamera {
- NSLog(@"打开了照相机");
- }
- - (void)call {
- NSLog(@"打电话");
- }
- #pragma mark - 按钮方法
- #pragma mark 前进
- - (void)forawrd {
- [self.webView goForward];
- }
- #pragma mark 后退
- - (void)back {
- [self.webView goBack];
- }
- @end
服务端的用法
ios中webview的高级用法(二)的更多相关文章
- ios中webview的高级用法
.隐藏上下滚动时出边界的后面的黑色的阴影 - (void) hideGradientBackground:(UIView*)theView { for (UIView * subview in the ...
- 详解Vue中watch的高级用法
我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: <div> <p>FullName: {{fullName} ...
- linux中find命令高级用法
前言 在<Linux中的文件查找技巧>一文中,我们已经知道了文件查找的基本方法,今天我们介绍find命令的一些高级使用技巧.它能满足我们一些更加复杂的需求. 查找空文件或空目录 有时候需要 ...
- iOS中的crash防护(二)KVC造成的crash
接上篇< iOS中的crash防护(一)unrecognized selector sent to instance> 我们攻克了找不到方法实现的crash,这一篇我这里主要分析一下在 ...
- iOS中webView加载URL需要处理特殊字符
今天在项目中遇到webView加载URL时,因为URL中有特殊字符,导致页面无法加载,而且在- (BOOL)webView:(UIWebView )webView shouldStartLoadWit ...
- iOS中 Swift初级入门学习(二)
// Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation /* // 控制语句 // for - in // 遍历字符 ...
- IOS中WebView的使用
UIWebView是iOS sdk中一个最常用的控件.是内置的浏览器控件,我们可以用它来浏览网页.打开文档等等,UIWebView能够加载html/htm.pdf.docx.txt等格式的文件 系统 ...
- iOS中Block的基础用法
本文简介 本章不会对Block做过多的实现研究.只是讲解基本的用法.纯粹基础知识.结合实际项目怎么去做举例.Block使用场景,可以在两个界面的传值,也可以对代码封装作为参数的传递等.用过GCD就知道 ...
- JavaScript高级用法二之内置对象
综述 本篇的主要内容来自慕课网,内置对象,主要内容如下 1 什么是对象 2 Date 日期对象 3 返回/设置年份方法 4 返回星期方法 5 返回/设置时间方法 6 String 字符串对象 7 返回 ...
随机推荐
- iOS开发-16进制颜色转换
项目中经常会用到颜色转换,有的是通过十六进制转成数字转颜色,想简单的点直接通过字符串转一下,简单扩展了一下分类UIColor,代码如下: +(UIColor *)colorWithHex:(NSStr ...
- TCP UDP Socket 即时通讯 API 示例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- CentOS中zip压缩和unzip解压缩命令详解
以下命令均在/home目录下操作cd /home #进入/home目录1.把/home目录下面的mydata目录压缩为mydata.zipzip -r mydata.zip mydata #压缩myd ...
- free的说明
http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html
- SSAS知识回放之订单数据分析
1:目标 基于已经做好的DW,利用SSAS实现一个多维数据模型的创建,通过浏览可以简单的实现订单数据的分析 2:步骤 2.1:添加数据源 如下图所示,创建一个数据仓库层的数据源连接 2.2:添加数据源 ...
- MFC对话框:模态对话框及其弹出过程
From: http://www.jizhuomi.com/school/c/160.html 加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨 ...
- ifdef ANDROID总是不好用
在vs的proprocessor definition中定义了ANDRIOD, 但是执行下面的代码的时候,总是说ANDROID is not defined. #ifdef ANDROID ...
- 手机wap适配
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...
- ZH奶酪:Python中range和xrange的区别
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列.range示例: >>> ...
- Linux shell中一些参数与变量简介
linux中shell变量$#,$@,$0,$1,$2,$!,$$,$*,$-,$@......等很多个,很容易记错,这里再次整理一下,相关含义解释如下,并附上一个实践截图. 多看几次,多用几次,应该 ...