封装 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. Binary Tree ZigZag Level Order Traversal leetcode java

    题目: Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from lef ...

  2. gradlew 命令行 build 调试 构建错误 Manifest merger failed MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. 使用MultipartEntity对文字、图片、视频进行综合上传

    package com.home.upload; import java.io.File; import java.nio.charset.Charset; import java.util.Arra ...

  4. 图形数据库 Neo4j 开发实战

    https://www.ibm.com/developerworks/cn/java/j-lo-neo4j/ Neo4j 是一个高性能的 NoSQL 图形数据库.Neo4j 使用图(graph)相关的 ...

  5. LSTM 文本情感分析/序列分类 Keras

    LSTM 文本情感分析/序列分类 Keras 请参考 http://spaces.ac.cn/archives/3414/   neg.xls是这样的 pos.xls是这样的neg=pd.read_e ...

  6. ES8新特性——ES8 was Released and here are its Main New Features

    原文: https://hackernoon.com/es8-was-released-and-here-are-its-main-new-features-ee9c394adf66 -------- ...

  7. 如何给USB移动硬盘格式化分区

    硬盘盒装好后,插在电脑USB接口上,电脑正常识别到移动硬盘后,但因为全新硬盘没有分区,在"我的电脑"里是看不到盘符的.下面以40G移动硬盘分区讲一下硬盘如何分区.1.操作系统最好是 ...

  8. springboot 中使用事务

    直接在service 层的方法上加上@Transactional 注解就ok. 注意事项: 1.Spring 基于注解的声明式事物 @Transactional 默认情况下只会对运行期异常(java. ...

  9. Web - TCP的三次握手

    在TCP/IP协议中,TCP协议提供可靠的连接服务,採用三次握手建立一个连接. 第一次握手:建立连接时,client发送syn包(syn=j)到server,并进入SYN_SENT状态,等待serv ...

  10. java class 文件

    class 文件是什么 1).是对一个java类或一个java接口的全面描述:2).是对java程序二进制文件格式的精确定义:3).一个class文件中只能包含一个类或接口:4).作为程序传给jvm的 ...