ios中webview的高级用法
2016-05-30 19:39
429 查看
1.隐藏上下滚动时出边界的后面的黑色的阴影 - (void) hideGradientBackground:(UIView*)theView { for (UIView * subview in theView.subviews) { if ([subview isKindOfClass:[UIImageView class]]) subview.hidden = YES; [self hideGradientBackground:subview]; } } 2. 禁用拖拽时的反弹效果 [(UIScrollView *)[[webView subviews] objectAtIndex:0] setBounces:NO]; 3. 判断用户点击类型 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { switch (navigationType) { //点击连接 case UIWebViewNavigationTypeLinkClicked: { NSLog(@"clicked"); } break; //提交表单 case UIWebViewNavigationTypeFormSubmitted: { NSLog(@"submitted"); } default: break; } return YES; }
#import "BaseViewController.h" @interface BaseViewController () { UIWebView *webview; } @end @implementation BaseViewController #pragma mark -life cicry - (void)viewDidLoad { [super viewDidLoad]; webview=[[UIWebView alloc] initWithFrame:self.view.bounds]; webview.delegate=self;//因为这个代理设置的self [self.view addSubview:webview]; [webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.requestUrl]]]; [webview release]; UIScrollView *scollview=(UIScrollView *)[[webview subviews]objectAtIndex:0]; scollview.bounces=NO; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void)viewDidUnload{ [super viewDidUnload]; self.requestUrl=nil; } - (void)dealloc { [_requestUrl release]; [super dealloc]; }
#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 + 1]; 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
服务端的用法
相关文章推荐
- Android使用百度地图API实现定位app
- 论工程结构设计的重要性
- (iPhone/iPad开发)怎样判断ios app第一次启动
- Android Espresso 测试框架探究
- 使用andorid studio遇到的问题
- 【原】iOS学习47之第三方-FMDB
- android那些坑
- 重构Pomelo游戏框架的Unity客户端
- Android中ListView使用总结
- 一些 iOS问题解决
- Android文件/文件夹选择器(支持多选操作),已封装为lib库,直接添加依赖即可。
- Android java 中如何优雅的结束线程
- iOS 多线程篇8—GCD的常见用法
- android中的四种启动模式launchMode
- 在android studio中加载本地html文件
- 深入理解Android之AOP
- Android——百度地图弹出详情窗口InfoWindow
- Android屏幕适配
- Android中Java与JavaScript之间交互(转)
- iOS 多线程篇7—GCD的基本使用