您的位置:首页 > 移动开发

webview中事件的用法

2013-06-26 21:34 316 查看
封装 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:1];
}

#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 + 1];
} else if(expiresRange.location != NSNotFound) {
// 找到了expiresIn
account.expiresIn = [[param substringFromIndex:expiresRange.location + expiresRange.length + 1] longLongValue];

} else if(uidRange.location != NSNotFound) {
// 找到了uid
account.uid = [param substringFromIndex:uidRange.location + uidRange.length + 1];
}
}

// 获取用户数据
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: