webview中事件的用法
封装 MBProgressHud ====================================
#import "MBProgressHUD.h" @interface MBProgressHUD (Add)
+ (void)showError:(NSString *)error toView:(UIView *)view; + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view;
@end ============================
#import "MBProgressHUD+Add.h" @implementation MBProgressHUD (Add)
#pragma mark 显示错误信息
+ (void)showError:(NSString *)error toView:(UIView *)view{
// 快速显示一个提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = error;
// 设置图片
hud.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"alert_failed_icon.png"]] autorelease];
// 再设置模式
hud.mode = MBProgressHUDModeCustomView; // 隐藏时候从父控件中移除
hud.removeFromSuperViewOnHide = YES; // 1秒之后再消失
[hud hide:YES afterDelay:];
} #pragma mark 显示一些信息
+ (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view {
// 快速显示一个提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = message;
// 隐藏时候从父控件中移除
hud.removeFromSuperViewOnHide = YES; // YES代表需要蒙版效果
//hud.dimBackground = YES; return hud;
}
@end
webview中MBPress的用法
#import "OauthController.h"
#import "MBProgressHUD+Add.h"
#import "WeiboAccount.h"
#import "User.h"
#import "UserMgr.h" @interface OauthController () {
UIWebView *_webView;
}
@end @implementation OauthController #pragma mark - 生命周期方法
- (void)loadView {
CGRect frame = [UIScreen mainScreen].applicationFrame;
_webView = [[[UIWebView alloc] initWithFrame:frame] autorelease];
self.view = _webView;
} - (void)viewDidLoad
{
[super viewDidLoad]; // 授权成功后,会跳到回调地址,并且把access_token拼接到回调地址后面
// reponse_type=token代表授权成功后直接返回access_token
NSString *str = [kOAuthURL stringByAppendingFormat:@"?%@=%@&%@=%@&display=mobile&response_type=token", kClientId, kAppKey, kRedirectURIKey, kRedirectURI]; [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
_webView.delegate = self;
} #pragma mark - UIWebView代理方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *url = request.URL.absoluteString;
NSRange range = [url rangeOfString:@"access_token"];
int location = range.location;
// 说明这是含有access_token的回调地址
if (location != NSNotFound) {
// 截取后面的参数字符串
NSString *paramStr = [url substringFromIndex:location];
// 切割所有的参数
NSArray *params = [paramStr componentsSeparatedByString:@"&"]; // access_token=2.00iEK52CsE94CDd31b67b95dEUONIB
// expires_in=157678625
// uid=2148327324 // 初始化账号
WeiboAccount *account = [WeiboAccount account]; // 遍历所有的参数
for (NSString *param in params) {
NSRange tokenRange = [param rangeOfString:kAccessToken];
NSRange expiresRange = [param rangeOfString:kExpiresIn];
NSRange uidRange = [param rangeOfString:KUid]; // 找到了accessToken
if (tokenRange.location != NSNotFound) {
account.accessToken = [param substringFromIndex:tokenRange.location + tokenRange.length + ];
} else if(expiresRange.location != NSNotFound) {
// 找到了expiresIn
account.expiresIn = [[param substringFromIndex:expiresRange.location + expiresRange.length + ] longLongValue]; } else if(uidRange.location != NSNotFound) {
// 找到了uid
account.uid = [param substringFromIndex:uidRange.location + uidRange.length + ];
}
} // 获取用户数据
UserMgr *mgr = [UserMgr mgr];
[mgr queryUserWithUid:account.uid];
mgr.queryUserBlock = ^(User *user, NSString *error) {
// 设置账号昵称
account.screenName = user.screenName; // 将账号写入沙盒
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path = [documents stringByAppendingPathComponent:kAccountFile];
[NSKeyedArchiver archiveRootObject:account toFile:path]; [MBProgressHUD hideHUDForView:self.view animated:YES];
// 关闭当前控制器
[self dismissViewControllerAnimated:YES completion:nil];
}; return NO;
}
return YES;
} - (void)webViewDidStartLoad:(UIWebView *)webView {
self.title = kLoadingMsg;
[MBProgressHUD showMessag:kLoadingMsg toView:self.view];
} - (void)webViewDidFinishLoad:(UIWebView *)webView {
self.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
[MBProgressHUD hideHUDForView:self.view animated:YES];
}
@end
webview中事件的用法的更多相关文章
- react.js 从零开始(五)React 中事件的用法
事件系统 虚拟事件对象 事件处理器将会传入虚拟事件对象的实例,一个对浏览器本地事件的跨浏览器封装.它有和浏览器本地事件相同的属性和方法,包括 stopPropagation() 和 prevent ...
- Net中事件的用法之一
1.事件与委托的关系 委托是一种类型 事件是委托的一个实例 事件中涉及两种角色--事件发布者和事件订阅者. 事件发布者: 触发事件的对象称为事件发布者. 事件订阅者: 捕获事件并对其做出处理的对象称为 ...
- Net中事件的用法之二
1.委托与事件的区别 事件对权限做了控制 1.委托可以直接调用 事件不可以直接调用 2.委托允许外面直接赋值 事件不允许外面直接赋值 2.事件与委托的实例比较 using System; using ...
- Android 响应webview中图片的点击事件
最近碰到个新需求需要点击webview中的图片进行放大显示. 整理了下思路,想到了下面的一个可行的方案. 方案思路, 1.在点击图片的时候调用本地的java方法并给出响应的图片地址 2.本地获得图片地 ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
[源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
- webview滑动事件 与内部html左右滑动事件冲突问题的解决办法
最近在做个混合app , 用html做页面,然后通过webview嵌套在activity中,效果是这样: 开始还是比较顺利,增加了菜单退出按钮,返回键页面回退功能,页面加载显示加载图标(在app端实现 ...
- VC++ 浅谈VS2010中CMFCToolBar的用法
本文将给大家介绍Visual Studio 2010中CMFCToolBar的用法,CMFCToolBar可以让用户自定义工具栏图标,使用静态成员函数SetUserImages()将一个CMFCToo ...
随机推荐
- B/S架构中常用弹出方法 (转)
<一> 在B/S架构的项目中,为了提高项目的易用性,增强系统与用户的交互功能,一般使用弹出页面来为用户提供操作或数据选择帮助信息,比如,用户输入一个编码中某些字符,在弹出页面中显示所有包含 ...
- 读书笔记,《深入理解java虚拟机》,第二章,java内存区域与内存溢出异常
第二节,运行时数据区域. 在这个章节中,作者给出了一个java虚拟机运行时数据区的框图,图的左侧是方法区和堆,这两个数据区是所有的线程所共享的.然后是虚拟机栈.本地方法栈.还有程序计数器,这三个 ...
- fasttext使用笔记
http://blog.csdn.net/m0_37306360/article/details/72832606 这里记录使用fastText训练word vector笔记 github地址:htt ...
- RAMPS1.4 3d打印控制板接线与测试2
http://learn.makerlab.me/guides/1/articles/2 mega 2560板子在3d打印机中相当于大脑,控制这所有的3d打印配件来完成复杂的打印工作,但mega256 ...
- (转)【风宇冲】Unity3D教程宝典之Blur
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 BlurBlur模糊其实理解了以后非常简单.核心原理就是 1个点的颜色 并不用该点的颜色,而是用该点周围 ...
- (转)No row with the given identifier exists问题的解决
产生此问题的原因: 有两张表,table1和table2.产生此问题的原因就是table1里做了关联<one-to-one>或者<many-to-one unique ...
- [Algorithm] Construct String from Binary Tree
You need to construct a string consists of parenthesis and integers from a binary tree with the preo ...
- slf4j、jcl、jul、log4j1、log4j2、logback大总结
1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j ...
- PHPCMS源码分析
PHPCMS 一.模版引擎 如:调用单页面index.php?m=content&c=index&a=lists&catid=9.1.先获取到模版变量的值$template_l ...
- CAD块参照转实体
经常,需要在CAD中插入块,比如图框,它的类型是INSERT,而不是Line和PolyLine.一般情况下,我们是不会去编辑它的,但有的时候需要选择它,比如在选择打印范围时,默认为过滤掉INSERT类 ...