ios中webview的高级用法

转载 2016年05月30日 19:39:44
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
复制代码

服务端的用法


iOS webView的高级用法之JS交互

前言:说起JS交互,很多童鞋会黯然色变,感觉很高深的样子。大部分小伙伴只知道一种,哪一种我也说说吧。    1.在webView中将要请求的时候,拦截URL,进行重定向,然而该场景实用有限,网上资料...

ios中webview的高级用法(二)

框架: webview与js的通信框架 #import "MJViewController.h" #import "MBProgressHUD+Add.h" @interface MJV...

iOS webView的高级用法之JS交互,js与oc的相互调用(JavaScriptCore)

前言:说起JS交互,很多童鞋会黯然色变,感觉很高深的样子。大部分小伙伴只知道一种,哪一种我也说说吧。    1.在webView中将要请求的时候,拦截URL,进行重定向,然而该场景实用有限,网上资料也...
  • horisea
  • horisea
  • 2016年08月12日 15:24
  • 5546

iOS 基于JavaScriptCore 不等webView加载完毕就交互,网页获取原生内容。 webView的高级用法之JS交互,js与oc的相互调用

一:本文解决的问题:    1.不等webView加载完毕,就能获取原生的内容,    2.举个例子: 加载一个城市生活网页,不等加载完成,h5端获取原生定位所在城市,然后根据城市名不同加载不同的城...
  • horisea
  • horisea
  • 2017年03月09日 10:58
  • 1486

ios中webview的高级用法

#import "MJViewController.h" #import "MBProgressHUD+Add.h" @interface MJViewController () ...

iOS 基于WebView浏览器的高级开发 (一)

1.如何在地址栏显示正确的地址 问题与概括: 在开发浏览器中,要有一个地址栏,经过测试可知,现在的html5网站,经常加载其他网址的控件或者内容,所以只获得正在加载的网址不能实现地址栏只显示当...

iOS自动布局高级用法 && 纯代码约束写法

新同事问我代码约束问题,我发现自己竟有点遗忘··· 赶紧找找“干货”学习学习,为将来铺路。。。 /****************分割线****************/ 本文主要介绍几个我遇到的...

iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值:         先说一下思想:         首先,创建两个视图控...
  • win_ann
  • win_ann
  • 2014年07月15日 17:05
  • 351

iOS UICollectionView 高级用法(长按cell移动重新排列)

iOS9 之后 前言: 看完你可以学到哪些呢? 就是文章标题那么多, 只有那么多. . 手残效果图没弄好.@property (nonatomic, strong) UICollectionView...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios中webview的高级用法
举报原因:
原因补充:

(最多只允许输入30个字)