`
云上太阳
  • 浏览: 131415 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

UIWebView应用——自己动手写IOS浏览器

 
阅读更多

      以前学习android的时候研究WebView控件,也是自己写了个简易版的浏览器;IOS同样做个简易版的浏览器,纯属学习,老鸟轻拍哈,若有失误,不吝赐教哈。。。

 

第一步:创建ios project 如下图所示,选择Single View Application:(目前只需要一个界面,所以选这个)

 

第二步:按照下图所示完善product Name(项目名),组织名等,然后next;

 

第三步:按照下图保存项目(也可自行保存到其他路径),create即可

最后生成的项目结构如下所示:

 

至此,项目建立已经完成,下面我们先在storyboard里面设计界面,然后码代码。

界面设计,打开main.storyboard,然后从控件区域直接拖控件到设计界面,如下图包括四个控件,UITextField,UIButton,UIWebView和红色框里面的UIActivityIndicatorView(俗称“菊花”)四个控件


 
然后在这个界面点击编辑器右上角的show the assistant editor按钮(红框中)



 

点击后界面变成下图样式
 接下来的操作简单来讲就是关联代码与刚刚设计的各个控件,按住鼠标按住UITextFeild并按住键盘control键,拖动鼠标到右侧代码@interface与@end之间松开,弹出下面窗口

 其他都默认,Name框输入serchUrl(生成的代码中对应这个输入框的名称),然后点击connect即可,右侧代码会增加一行,并且右边会有个实心的圆圈,表示属性与界面已关联好

 

 

  @property (weak, nonatomic) IBOutletUITextField *serchUrl; 

 

 其他三个控件做法和UITextFeild一样,最后生成的ViewController.h如下

 

//
//  ViewController.h
//  MyWebView
//
//  Created by 张亚强 on 15/4/13.
//  Copyright (c) 2015年 张亚强. All rights reserved.
//

#import <UIKit/UIKit.h>
//实现UIWebViewDeleGate协议,也就是能够使用其方法
//比如在ViewController.m中的webViewDidStartLoad等
@interface ViewController : UIViewController<UIWebViewDelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;//webview
@property (weak, nonatomic) IBOutlet UITextField *serchUrl;//输入框
@property (weak, nonatomic) IBOutlet UIButton *goBtn;//按钮
@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *indicator;//菊花
@end

 

 做到这一步界面和代码已经做好关联(苹果认死了MVC模式),我们成功了一大半,下面的内容是:输入框输入网址(比如  tudou.com),然后点击GO按钮,则下面WebView 跳转到土豆网主页。具体的编码工作在ViewController.m文件中完成,代码以及详细的注释如下:

//
//  ViewController.m
//  MyWebView
//
//  Created by 张亚强 on 15/4/13.
//  Copyright (c) 2015年 张亚强. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController
//此方法是类初始化时执行的
- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadWebViewWithString:@"http://www.baidu.com"];
}
//初始化首页百度封装成方法,在viewDidLoad中初始化调用
//传入网址stringUrl拼成http://。。。这种格式并在webview中显示
-(void)loadWebViewWithString:(NSString *)stringUrl{
    NSURL *url = [[NSURL alloc] initWithString:stringUrl];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [self.webView loadRequest:request];
    self.serchUrl.text=@"www.baidu.com";
}

//下面三个方法是UIWebViewDelegete的
//WebView加载时执行
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    //让菊花转动
    [self.indicator startAnimating] ;
}
//webview加载完毕时执行
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //让菊花停止转动
    [self.indicator stopAnimating];
}
//webview加载出错时执行
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    [self.indicator stopAnimating];
}
//这个方法是项目建好后自动生成的
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
 

 

 现在运行项目已经可以出现百度首页了,是不是很开心啊



 
      然后激动的你在输入框输入tudou.com之后发现页面并没有按照预想的那样跳转,问题出在哪儿呢?我们回头想想,也梳理下刚刚的操作步骤。第一步画好了界面,第二步代码与界面关联好,总觉的哪儿不对,是的,按钮按下的跳转事件呢?做法和前面按住control拖动控件到ViewController.h一样,这次我们直接拖到ViewController.m。

      同样在Main.storyboard界面点击show assistant editor按钮,如果右边的代码不是ViewContoller.m的,那么在红框中找到ViewController.m(我相信这个你绝对没问题)

 
按住control键拖动GO到右侧代码,弹出框name输入sendPage;会在右侧生成sendPage方法;然后完善方法。最后ViewController.m代码如下

//
//  ViewController.m
//  MyWebView
//
//  Created by 张亚强 on 15/4/13.
//  Copyright (c) 2015年 张亚强. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController
//此方法是类初始化时执行的
- (void)viewDidLoad {
    [super viewDidLoad];
    [self loadWebViewWithString:@"http://www.baidu.com"];
}
//初始化首页百度封装成方法,在viewDidLoad中初始化调用
//传入网址stringUrl拼成http://。。。这种格式并在webview中显示
-(void)loadWebViewWithString:(NSString *)stringUrl{
    NSURL *url = [[NSURL alloc] initWithString:stringUrl];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [self.webView loadRequest:request];
    self.serchUrl.text=@"www.baidu.com";
}

//GO按钮点击转到网页
- (IBAction)sendPage:(id)sender {
    [self.indicator startAnimating] ;
    //封装成URL,http://后加输入框输入的网址
    NSURL *url = [[NSURL alloc] initWithString:[@"http://" stringByAppendingPathComponent:self.serchUrl.text]];
    //封装成Request
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    //加载网页
    [self.webView loadRequest:request];
}

//下面三个方法是UIWebViewDelegete的
//WebView加载时执行
- (void)webViewDidStartLoad:(UIWebView *)webView
{
    //让菊花转动
    [self.indicator startAnimating] ;
}
//webview加载完毕时执行
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //让菊花停止转动
    [self.indicator stopAnimating];
}
//webview加载出错时执行
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    [self.indicator stopAnimating];
}
//这个方法是项目建好后自动生成的
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 

*注意在main.storyboard界面选中菊花,在右边点击,然后在下面Activity indicator View中选中Hides when stopped,表示菊花在不转动的情况下是隐藏的。

 至此我们的简易版浏览器全部做完,输入tudou.com,点击GO会跳转到土豆首页


 其他细节比如旋转屏幕后布局问题这些不再赘述,自行百度去吧。程序代码打包给出

打包的代码中我加了Navigator,不过对上面没有影响

源码:MyWebView.zip

  • 大小: 45.7 KB
  • 大小: 157.2 KB
  • 大小: 145.5 KB
  • 大小: 34.8 KB
  • 大小: 194.2 KB
  • 大小: 134.1 KB
  • 大小: 308 KB
  • 大小: 252.2 KB
分享到:
评论

相关推荐

    IOS应用源码——类似Chrome浏览器的多页签视图.zip

    这个压缩包文件“IOS应用源码——类似Chrome浏览器的多页签视图.zip”提供了一个iOS应用程序的源代码,该程序实现了类似于Google Chrome浏览器的多标签页视图。这个源码示例对于iOS开发者,尤其是那些希望学习如何在...

    探讨iOS浏览器的安全问题

    本文档将讨论iOS中的第三方开发浏览器是如何开发出来的。内容将包含UIWebView的主要能力和限制,浏览器开发者会添加...作者还将介绍Mobile Safari和UIWebView本身的安全弱点,并讨论iOS8新的WebKit API——WKWebView。

    IOS应用源码——SVWebViewController for iOS.rar

    【SVWebViewController for iOS】是iOS平台上一个用于展示网页内容的源码库,它是一个轻量级的浏览器组件,常被开发者用来集成到自己的应用程序中,以实现内嵌的网页浏览功能。这个库是由Stevelane开发的,以其高效...

    IOS应用源码——一个功能还算完整的浏览器.zip

    这个压缩包文件“IOS应用源码——一个功能还算完整的浏览器.zip”显然包含了iOS平台上一个名为“TSMiniWebBrowser”的小型浏览器应用的源代码。这个应用可能由Tonisalae开发,版本号为e8373e2。下面将详细讨论iOS...

    IOS应用源码——一个功能还算完整的浏览器.rar

    在本资源中,我们拥有一个名为"IOS应用源码——一个功能还算完整的浏览器"的iOS应用程序源代码。这个RAR压缩包包含了一个基本的浏览器应用,是开发者或学习者研究iOS应用开发,特别是Web浏览功能实现的理想素材。让...

    IOS应用源码——UIWebViewBrowse 2.rar

    这个名为"IOS应用源码——UIWebViewBrowse 2.rar"的压缩包可能包含了一个基于UIWebView实现的简单浏览器应用的完整源代码。UIWebViewBrowse 2很可能是该应用的第二个版本,意味着开发者可能对原始版本进行了一些改进...

    ios-浏览器 For iOS.zip

    《iOS浏览器开发详解——基于WebBrowser开源项目》 在移动设备上,浏览器是用户与互联网交互的重要入口。本文将深入探讨iOS平台上的浏览器开发,特别关注一个名为"WebBrowser"的开源项目,该项目位于GitHub...

    IOS应用源码——UIWebViewBrowse2.rar

    `UIWebView`是Apple提供的一种原生控件,允许开发者在iOS应用内部加载和展示HTML、CSS和JavaScript内容,从而为用户提供类似于网页浏览器的体验。 首先,`UIWebView`是iOS开发中的关键组件之一,它是UIKit框架的一...

    嵌入iOS应用的开源web浏览器控件

    源码TSMiniWebBrowser,TSMiniWebBrowser是一款嵌入iOS应用的开源web浏览器控件,它解决了开源浏览器控件中一个共同的知名Bug——UIWebView bug,结合“缩放”和“横向切换”操作时,浏览器会产生一些不稳定的行为。...

    iOS5 程序开发

    《iOS5程序开发》这本书是针对苹果公司的移动操作系统——iOS5进行深入讲解的一本技术书籍。书中涵盖了iOS5开发中的核心概念、技术和实践方法,旨在帮助开发者熟练掌握iOS5平台上的应用程序开发。作为一本编程烹饪书...

    Unity内嵌浏览器.zip

    这些插件通常是基于原生平台的WebKit(iOS)或Chromium(Android)引擎,提供一个UIWebView或WebView对象,使得Unity能够与之交互。 二、UniWebView插件 "UniWebView"是Unity内嵌浏览器的常见解决方案之一,它是一...

    WebKit在iOS上的技术调研

    - **用自定义协议实现HTML与Objective-C互操作**:这种方法涉及到在Objective-C中创建一个iOS应用程序,该应用程序利用UIWebView加载HTML页面,并通过重写`shouldStartLoadWithRequest`方法来拦截特定格式的URL请求...

    FileExplorer:使用Swift编写的iOS文件浏览器

    《使用Swift编写的iOS文件浏览器——FileExplorer》 在iOS应用开发中,为用户提供便捷的文件管理功能是一项重要任务。本文将深入探讨如何利用Swift语言创建一个名为“FileExplorer”的iOS文件浏览器。在这个项目中...

    ios-基于WKWebView的hybride的demo 。拦截了css,js,png等所有客户端请求。原理还是NSURLProtocol.zip

    总的来说,HybridWKWebVIew项目是一个很好的学习资源,它演示了如何在iOS应用中有效地集成WKWebView进行Hybrid开发,并通过自定义`NSURLProtocol`来实现网络请求的拦截和控制,这对于提升应用性能和用户体验有着重要...

    《iPhone开发实战》.(Christopher Allen).pdf

    WebKit是iPhone内置的浏览器引擎,对于理解如何制作Web应用程序至关重要。iUI是一个开源的用户界面框架,旨在简化iPhone风格的Web应用程序的开发,而Canvas则提供了在网页上绘制图形的能力。 书中还介绍了一个Web...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    WebApp 基于浏览器来实现的一种应用 HybridApp 一种可以下载的Native App,其用户界面的全部或者部分元素在嵌入式浏览器组件(WebView之类的)里面运行 优雅降级 一开始就构建站点的完整功能,然后针对浏览器测试和...

Global site tag (gtag.js) - Google Analytics