//
//  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

UIKit 框架之WebView的更多相关文章

  1. Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)

    原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...

  2. UIKit框架

    在今后的应用程序构建中,会陆续使用各式各样的控件,因此UIKit框架的引入是必不可少的! 一.简介 UIKitk框架提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口.应 ...

  3. iOS学习32之UIKit框架-可视化编程-XIB

    1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...

  4. 基础框架Fundation和UIkit框架的定义和使用

    Foundation 框架为所有应用程序提供基本的系统服务 您的应用程序以及 UIKit 和其他框架,都建立在 Foundation 框架的基础结构之上.Foundation 框架提供许多基本的对象类 ...

  5. iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。

    转发:http://my.oschina.net/u/1378445/blog/335014 iOS UIKit动力学 Dynamics UIAttachmentBehavior 实现iMessage ...

  6. iOS开发UIKit框架-可视化编程-XIB

    1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...

  7. 79、iOS 的Cocoa框架、Foundation框架以及UIKit框架

    Cocoa框架是iOS应用程序的基础 1. Cocoa是什么? Cocoa是 OS X和ios 操作系统的程序的运行环境. 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发 ...

  8. UIKit 框架之UIView二

    下面这些都是UIView一些基本的东西,具体的可以参考UIKit 框架之UIView一博客 一.自定义一个View // // MyView.m // UIView // // Created by ...

  9. UIKit 框架之Bar、Controller

    UIKit框架中有各种Bar,UITabBar.UINavigationBar.UIToolbar.Bar对应的就有一些Item,tabBarItem.navigationItem.toolbarIt ...

随机推荐

  1. Eclipse新建工作空间,复制原有的配置

    步骤一: File->Switch workspace->Other...,按下图选择 只复制简单的配置,如cvs之类的信息是不会复制的.     步骤二: 在方法一的基础上做如下操作  ...

  2. Hadoop MapReduce Task Log 无法查看syslog问题

    现象: 由于多个map task共用一个JVM,所以只输出了一组log文件 datanode01:/data/hadoop-x.x.x/logs/userlogs$ ls -R .: attempt_ ...

  3. 1.mysql安装

    Navicat账号:root 密码:weihu 账号:weihu 密码:weihu 1.首先进入的是安装引导界面 2.然后进入的是类型选择界面,这里有3个类型:Typical(典型).Complete ...

  4. [转载]WIKI MVC模式

    MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最 ...

  5. C# if else 使物体在X轴循环移动

    if( transform.position.x > -15 && transform.rotation.y == 0 ) { //小鸟X轴反方向移动速度 transform.p ...

  6. Windows核心编程:第3章 内核对象

    Github https://github.com/gongluck/Windows-Core-Program.git //第3章 内核对象.cpp: 定义应用程序的入口点. // #include ...

  7. 【js】关于正则表达式

    正则表达式描述了字符的模式对象 语法: var patt=new RegExp(pattern,modifiers); 或更简单的方法 var patt=/pattern/modifiers; 模式描 ...

  8. [初识]使用百度AI接口,图灵机器人实现简单语音对话

    一.准备 1.百度ai开放平台提供了优质的接口资源https://ai.baidu.com/  (基本免费) 2.在语音识别的接口中, 对中文来说, 讯飞的接口是很好的选择https://www.xf ...

  9. cad2017卸载/安装失败/如何彻底卸载清除干净cad2017注册表和文件的方法

    cad2017提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2017失败提示cad2017安装未完成,某些产品无法安装,也有时候想重新安装cad2017 ...

  10. Java按时间梯度实现异步回调接口

    1. 背景 在业务处理完之后,需要调用其他系统的接口,将相应的处理结果通知给对方,若是同步请求,假如调用的系统出现异常或是宕机等事件,会导致自身业务受到影响,事务会一直阻塞,数据库连接不够用等异常现象 ...