封装 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中事件的用法的更多相关文章

  1. react.js 从零开始(五)React 中事件的用法

    事件系统   虚拟事件对象 事件处理器将会传入虚拟事件对象的实例,一个对浏览器本地事件的跨浏览器封装.它有和浏览器本地事件相同的属性和方法,包括 stopPropagation() 和 prevent ...

  2. Net中事件的用法之一

    1.事件与委托的关系 委托是一种类型 事件是委托的一个实例 事件中涉及两种角色--事件发布者和事件订阅者. 事件发布者: 触发事件的对象称为事件发布者. 事件订阅者: 捕获事件并对其做出处理的对象称为 ...

  3. Net中事件的用法之二

    1.委托与事件的区别 事件对权限做了控制 1.委托可以直接调用 事件不可以直接调用 2.委托允许外面直接赋值 事件不允许外面直接赋值 2.事件与委托的实例比较 using System; using ...

  4. Android 响应webview中图片的点击事件

    最近碰到个新需求需要点击webview中的图片进行放大显示. 整理了下思路,想到了下面的一个可行的方案. 方案思路, 1.在点击图片的时候调用本地的java方法并给出响应的图片地址 2.本地获得图片地 ...

  5. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

  6. 重新想象 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 ...

  7. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  8. webview滑动事件 与内部html左右滑动事件冲突问题的解决办法

    最近在做个混合app , 用html做页面,然后通过webview嵌套在activity中,效果是这样: 开始还是比较顺利,增加了菜单退出按钮,返回键页面回退功能,页面加载显示加载图标(在app端实现 ...

  9. VC++ 浅谈VS2010中CMFCToolBar的用法

    本文将给大家介绍Visual Studio 2010中CMFCToolBar的用法,CMFCToolBar可以让用户自定义工具栏图标,使用静态成员函数SetUserImages()将一个CMFCToo ...

随机推荐

  1. 非常精简的Linux线程池实现(一)——使用互斥锁和条件变量

    线程池的含义跟它的名字一样,就是一个由许多线程组成的池子. 有了线程池,在程序中使用多线程变得简单.我们不用再自己去操心线程的创建.撤销.管理问题,有什么要消耗大量CPU时间的任务通通直接扔到线程池里 ...

  2. 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析

    前言: 移动开发是未来一个很重要的IT领域,而跨平台开发将是这一领域最重要的事情.         ----谷震平 一 兵器谱 在国外,最大的是Cordova(PhoneGap,2011年广泛流行), ...

  3. java根据图片路径下载到服务器方案 (转)

    http://www.cnblogs.com/thinkingandworkinghard/articles/5589484.html 平常做的工作中,有一部分是同步数据的.但是同步的过程中碰到个问题 ...

  4. 【转载】.NET/C#-uploadify视频文件or大文件上传

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章: [Asp.net]Up ...

  5. linux下获取硬盘使用情况[总结]

    1.前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃.为了捕获硬盘写满的异常场景,我们需要在写日志过程中判断硬盘空间 ...

  6. 用bochs调试自己写的系统引导代码

    1 安装和配置bochs 首先从bochs.sourceforge.net里面把BOCHS给download下来,鉴于Windows的普及,仅仅谈BOCHS在win下的使用方法,其实在其它的OS中方法 ...

  7. C# Winform 未能加载文件或程序集"System.Data.SQLite"或它的某一个依赖项。试图加载格式不正确的程序

    在使用Winform 开发了一个小软件,其中使用了SQLite作为数据库 但在我的Win7 64位系统上却出现了以下错误: System.BadImageFormatException: 未能加载文件 ...

  8. gson ajax 数字精度丢失

    ajax传输的json,gson会发生丢失,long > 15的时候会丢失0 解决方案:直接把属性为long的属性自动加上双引号成为js的字符串,这样就不会发生丢失了,ajax自动识别为字符串. ...

  9. linux下安装与删除软件

    linux下安装与删除软件 (2005-07-04 11:24:10) 转载▼ 标签: 杂谈 分类: MSN搬家 现在linuxx下的软件大都是rpm,deb.tar.gz和tar.bz2格式.1.r ...

  10. 最纯粹的直播技术实战03-通过filter进行旋转及卡顿修复

    最纯粹的直播技术实战03-通过filter进行旋转及卡顿修复 最新实战教程,Android自己主动化刷量.作弊与防作弊,案例:刷友盟统计.批量注冊苹果帐号 这个系列的文章将会研究最纯粹的Android ...