亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

在iOS應用中使用UIWebView創建簡單的網頁瀏覽器界面

2020-07-26 03:28:49
字體:
來源:轉載
供稿:網友

UIWebView是iOS sdk中一個最常用的控件。是內置的瀏覽器控件,我們可以用它來瀏覽網頁、打開文檔等等。這篇文章我將使用這個控件,做一個簡易的瀏覽器。如下圖:

201612991842514.png (353×698)

我們創建一個Window-based Application程序命名為:UIWebViewDemo

UIWebView的loadRequest可以用來加載一個url地址,它需要一個NSURLRequest參數。我們定義一個方法用來加載url。在UIWebViewDemoViewController中定義下面方法:

復制代碼 代碼如下:

- (void)loadWebPageWithString:(NSString*)urlString
{
    NSURL *url =[NSURL URLWithString:urlString];
    NSLog(urlString);
    NSURLRequest *request =[NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
}

在界面上放置3個控件,一個textfield、一個button、一個uiwebview,布局如下:

201612991902510.png (677×456)

在代碼中定義相關的控件:webView用于展示網頁、textField用于地址欄、activityIndicatorView用于加載的動畫、buttonPress用于按鈕的點擊事件。

復制代碼 代碼如下:

@interface UIWebViewDemoViewController :UIViewController<UIWebViewDelegate> {   
    IBOutlet UIWebView *webView;
    IBOutlet UITextField *textField;
    UIActivityIndicatorView *activityIndicatorView;
    
}
- (IBAction)buttonPress:(id) sender;
- (void)loadWebPageWithString:(NSString*)urlString;
@end

使用IB關聯他們。

設置UIWebView,初始化UIActivityIndicatorView:

復制代碼 代碼如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    webView.scalesPageToFit =YES;
    webView.delegate =self;
    activityIndicatorView = [[UIActivityIndicatorView alloc]
                             initWithFrame : CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)] ;
    [activityIndicatorView setCenter: self.view.center] ;
    [activityIndicatorView setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite] ;
    [self.view addSubview : activityIndicatorView] ;
    [self buttonPress:nil];
    // Do any additional setup after loading the view from its nib.
}

UIWebView主要有下面幾個委托方法:

1、- (void)webViewDidStartLoad:(UIWebView *)webView;開始加載的時候執行該方法。
2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加載完成的時候執行該方法。
3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加載出錯的時候執行該方法。

我們可以將activityIndicatorView放置到前面兩個委托方法中。

復制代碼 代碼如下:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    [activityIndicatorView startAnimating] ;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [activityIndicatorView stopAnimating];
}

buttonPress方法很簡單,調用我們開始定義好的loadWebPageWithString方法就行了:
復制代碼 代碼如下:

- (IBAction)buttonPress:(id) sender
{
    [textField resignFirstResponder];
    [self loadWebPageWithString:textField.text];
    
}

當請求頁面出現錯誤的時候,我們給予提示:
復制代碼 代碼如下:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@"" message:[error localizedDescription]  delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alterview show];
    [alterview release];
}

動態獲取UIWebView高度
監聽 webView的 contentSize,每當contentSize的值改變時就去更改webView 的frame。
復制代碼 代碼如下:

[activityWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];

然后在回調方法里改變webView的frame
復制代碼 代碼如下:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"contentSize"]) {
        webViewHeight = [[activityWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
        CGRect newFrame       = activityWebView.frame;
        newFrame.size.height  = webViewHeight;
        activityWebView.frame = newFrame;
        [mainTableView setTableHeaderView:activityWebView];
    }
}

在頁面消失時記得 remove 監聽對象,否則會閃退
復制代碼 代碼如下:

-(void)viewWillDisappear:(BOOL)antimated{
    [super viewWillDisappear:antimated];
    [activityWebView.scrollView removeObserver:self
forKeyPath:@"contentSize" context:nil];
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级大片在线观看| 欧美午夜丰满在线18影院| 亚洲成人免费在线视频| 亚洲欧洲美洲在线综合| 亚洲国产精品高清久久久| 成人信息集中地欧美| 色综合久久天天综线观看| 国产日韩欧美夫妻视频在线观看| 精品亚洲va在线va天堂资源站| 性色av香蕉一区二区| 亚洲精品欧美极品| 91久久久久久久久| 国产精品爽爽ⅴa在线观看| 国产精品色视频| 久久久久久久久久久成人| 精品久久香蕉国产线看观看gif| 亚洲性av在线| 欧美大成色www永久网站婷| 深夜福利日韩在线看| 日本高清+成人网在线观看| 亚洲视频在线观看| 日韩一区av在线| 欧美野外猛男的大粗鳮| 一道本无吗dⅴd在线播放一区| 亚洲国产古装精品网站| 久久精品久久久久| 国产成人福利夜色影视| 一区二区国产精品视频| 最近2019年中文视频免费在线观看| 国产成人在线亚洲欧美| 亚洲最大中文字幕| 国产精品久久久久免费a∨| 亚洲免费视频网站| 欧美亚洲成人免费| 久久久久久高潮国产精品视| 亚洲综合自拍一区| 亚洲欧美日韩国产成人| 精品国产31久久久久久| 精品国产依人香蕉在线精品| 国产福利视频一区二区| 92看片淫黄大片看国产片| 久久天天躁夜夜躁狠狠躁2022| 久久久久日韩精品久久久男男| 亚洲午夜女主播在线直播| 亚洲香蕉成视频在线观看| 91九色在线视频| 午夜精品在线观看| 一区二区三区四区在线观看视频| 亚洲成人精品视频| 日韩美女免费视频| 97色伦亚洲国产| 久久精品久久久久久国产 免费| 性欧美办公室18xxxxhd| 日韩美女毛茸茸| 高跟丝袜一区二区三区| 97**国产露脸精品国产| 亚洲精品美女久久久| 国产精品毛片a∨一区二区三区|国| 欧美日韩高清在线观看| 久久久视频精品| 亚洲欧美激情一区| 伊人成人开心激情综合网| 人人澡人人澡人人看欧美| 欧美激情视频在线| 欧美大胆a视频| 色黄久久久久久| 日韩av网址在线| 成人www视频在线观看| 欧美午夜www高清视频| 中文字幕亚洲第一| 欧美高清电影在线看| 国产精品一区二区三区久久| 亚洲国产成人精品一区二区| 在线色欧美三级视频| 欧美日韩国产色| 色偷偷9999www| www.欧美免费| 亚洲免费视频一区二区| 最新69国产成人精品视频免费| 国产精品jizz在线观看麻豆| 国产亚洲aⅴaaaaaa毛片| 日韩成人激情视频| 亚洲欧美在线磁力| 91在线观看免费高清完整版在线观看| 69久久夜色精品国产69乱青草| 亚洲午夜久久久久久久| 亚洲自拍偷拍一区| 欧美日韩中文字幕在线视频| 日韩av观看网址| 日产精品久久久一区二区福利| 欧美国产日韩视频| 亚洲视频欧美视频| 亚洲人在线观看| 日韩中文字幕在线视频播放| 国产一区二区三区在线看| 久久久久久伊人| 91亚洲一区精品| 久久影视电视剧凤归四时歌| 日韩高清不卡av| 日韩欧美国产黄色| 91精品国产网站| 亚洲欧美在线一区| 国产精品第一视频| 亚洲视频在线观看网站| 欧美日韩国产精品一区二区不卡中文| 久久这里只有精品视频首页| 欧美日韩裸体免费视频| 亚洲精品视频二区| 91精品国产综合久久久久久久久| 国内偷自视频区视频综合| 国产精品久久久久久久一区探花| 国产中文日韩欧美| 日本免费久久高清视频| 亚洲精品久久久久久久久久久久久| 国产91精品久久久久| 亚洲视频免费一区| 国产精品扒开腿做爽爽爽男男| 亚洲在线www| 国产精品扒开腿做爽爽爽视频| 26uuu国产精品视频| 国产精品扒开腿做爽爽爽的视频| 亚洲成人精品视频在线观看| 久久色在线播放| 成人午夜黄色影院| 日韩中文在线中文网三级| 精品日韩美女的视频高清| 亚洲视频电影图片偷拍一区| 国产精品99久久久久久白浆小说| 国产精品久久激情| 久久亚洲影音av资源网| 日韩va亚洲va欧洲va国产| 国产精品爱久久久久久久| 91久久久久久久一区二区| 亚洲欧美国产制服动漫| 在线激情影院一区| 7777精品久久久久久| 91久久嫩草影院一区二区| 久久精品国产精品亚洲| 欧美视频一二三| 久久精品视频免费播放| 热99久久精品| 国产精品专区一| 亚洲天堂影视av| 欧美亚洲视频在线观看| 色多多国产成人永久免费网站| 国产一区二区三区三区在线观看| 庆余年2免费日韩剧观看大牛| 狠狠久久亚洲欧美专区| 亚洲自拍在线观看| 亚洲欧美另类国产| 欧美一级在线播放| 亚洲成人久久久久| 欧美国产在线电影| 国产日韩欧美自拍| 欧美日韩成人在线播放| 欧美一级电影免费在线观看| 91久久精品在线| 亚洲成人久久电影| 亚洲天堂av综合网| 欧美日韩中国免费专区在线看| 韩国福利视频一区| 精品视频在线导航| 国产精品色悠悠| 国产精品久久久久久久久久免费|