UIKit 框架之WebView

简介:

//
//  ViewController.m
//  UIWebView
//
//  Created by City--Online on 15/5/18.
//  Copyright (c) 2015年 XQB. All rights reserved.
//
 
#import "ViewController.h"
 
@interface ViewController ()<UIWebViewDelegate>
@property(nonatomic,strong) UIWebView *webView;
@property(nonatomic,strong) UIActivityIndicatorView *activityView;
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
 
    _webView=[[UIWebView alloc]init];
    _webView.frame=self.view.bounds;
    _webView.delegate=self;
     
 
//    NSString *filePath=[[NSBundle mainBundle] pathForResource:@"百度"ofType:@"html"];
//    NSString *str=[[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
//    [_webView loadHTMLString:str baseURL:nil];
     
    NSURL *url=[NSURL URLWithString:@"http://www.cnblogs.com/gcb999/p/3178728.html"];
    NSURLRequest *request=[[NSURLRequest alloc]initWithURL:url];
     
     
    //禁用拖拽时的反弹效果
    _webView.scrollView.bounces=NO;
    //默认值为NO,用户不可以放大或缩小页面;如果设置为YES,页面可以通过放大缩小去适应,用户也可以通过手势来放大和缩小
    _webView.scalesPageToFit=YES;
    //此属性可以设定使电话号码、网址、电子邮件和符合格式的日期等文字变为链接文字
//    typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) {
//        UIDataDetectorTypePhoneNumber   = 1 << 0,          // Phone number detection 识别电话号码
//        UIDataDetectorTypeLink          = 1 << 1,          // URL detection识别网址,链接等
//        UIDataDetectorTypeAddress       = 1 << 2,          // Street address detection 识别地址
//        UIDataDetectorTypeCalendarEvent = 1 << 3,          // Event detection 识别时间
//        UIDataDetectorTypeNone          = 0,               // No detection at all 全都不识别
//        UIDataDetectorTypeAll           = NSUIntegerMax    // All types 全部识别
//    };
    _webView.dataDetectorTypes=UIDataDetectorTypePhoneNumber;
     
//    控制webview使用html5的video播放视频不全屏(inline)的方法
//    webview中用html5的video方式播放视频时,在ipad上是默认原来大小的,而在iphone上是默认全屏播放的
//    HTML里video必须加上webkit-playsinline属性
//    <video id="player" width="480" height="320" webkit-playsinline>
//    Obj-C里,webview设置allowsInlineMediaPlayback属性为YES
//    webview.allowsInlineMediaPlayback = YES;
    _webView.allowsInlineMediaPlayback=YES;
     
    //是否支持自动播放
//    <script>
//    if ("wView" in window) {
//        window.wView.allowsInlineMediaPlayback = "YES";
//        window.wView.mediaPlaybackRequiresUserAction = "NO";
//    }
//    </script>
//    在head中加入此段代码,ios音视频不能自动播放的问题迎刃而解。
//    当然,在video标签中,需要先设定autoplay和preload属性,如下:
//    <video src="xxxxxx" autoplay preload></video>
     
    _webView.mediaPlaybackRequiresUserAction=NO;
     
    //从这个页面是否可以Air Play。 在iPhone和iPad上默认使YES。
    _webView.mediaPlaybackAllowsAirPlay=YES;
     
    //是否网页内容下载完毕才开始渲染web视图,默认为NO
    _webView.suppressesIncrementalRendering=NO;
     
    //是否在web页面响应用户输入弹出键盘,默认为YES
    _webView.keyboardDisplayRequiresUserAction=YES;
     
    //IOS7增加了分页功能
//    @property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);
//    @property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);
//    @property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);
//    @property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);
//    @property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);
 
    _webView.paginationMode=UIWebPaginationModeUnpaginated;
    [_webView loadRequest:request];
     
    [self.view addSubview:_webView];
    _activityView=[[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(20, 20, 40, 40)];
    _activityView.center=self.view.center;
    _activityView.activityIndicatorViewStyle=UIActivityIndicatorViewStyleWhiteLarge;
    [self.view addSubview:_activityView];
     
}
//如果返回NO,代表不允许加载这个请求
- (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;
}
//开始加载
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    [_activityView startAnimating];
}
//加载完毕
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [_activityView stopAnimating];
}
//加载失败
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
//    [_webView goBack];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
@end


与JS交互这块下面的博客还不错

http://blog.csdn.net/lizhongfu2013/article/details/9232129

http://blog.csdn.net/lizhongfu2013/article/details/9236357

相关文章
|
6月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
6月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
前端开发 JavaScript Android开发
利用鸿蒙 JavaUI 框架的 WebView 加载本地冰墩墩网页
最近冰墩墩也太火了,各路大神纷纷表示用代码画冰墩墩,而我也刚好看到一个前端大神 Austin 用 JavaScript 前端写了一个冰墩墩,大家可以下载代码,本地打开就可以看到这个可爱的冰墩墩了。代码在后文参考资料中,大家可以自己下载。
利用鸿蒙 JavaUI 框架的 WebView 加载本地冰墩墩网页
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
1115 0
|
6月前
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
105 1
|
5月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
146 0
|
Android开发 iOS开发 UED
Android webView 实现阻尼回弹效果
iOS webView默认滑动到顶部或者底部的时候,还可以继续通过手指拉扯滑动,松手后回弹;而Android webView默认是不行的,要实现跟iOS一样的效果,就需要自定义webView。
607 0
|
7月前
|
JavaScript 前端开发 Android开发
android开发,使用kotlin学习WebView(详细)
android开发,使用kotlin学习WebView(详细)
551 0
|
定位技术 Android开发
[√]Android webview的url scheme
[√]Android webview的url scheme
557 0
|
JavaScript 前端开发 Android开发
Android AgentWeb WebView 与js交互总结
Android AgentWeb WebView 与js交互总结
369 0