簡體   English   中英

在Safari中打開WebView鏈接

[英]Open WebView links in Safari

在運行該應用程序時,它會先加載,然后再在Safari中加載網頁。 如何在UIWebView加載頁面並如何在Safari中打開webView的外部鏈接?

這是webviewcontroller.m的一些代碼-

#import "WebViewController.h"


@implementation WebViewController

@synthesize webView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
    // Initialization code
}
return self;
}

/*
 If you need to do additional setup after loading the view, override viewDidLoad. */
- (void)viewDidLoad {

NSString *urlAddress = @"url link goes here";

//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];
[[UIApplication sharedApplication] openURL:url];

//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//Load the request in the UIWebView.
[webView loadRequest:requestObj];
}

@結束

第一行代碼加載到Safari中而不是應用程序中的UIWebView的原因是以下代碼行:

[[UIApplication sharedApplication] openURL:url];

viewDidLoad方法中刪除此行。

為了在Safari應用程序中的webView加載鏈接,請首先使用webView.delegate = self;將視圖控制器設置為webView的委托webView.delegate = self; viewDidLoad方法中。

然后將以下代碼添加到您的viewController

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    if (navigationType == UIWebViewNavigationTypeLinkClicked)
    {
        [[UIApplication sharedApplication] openURL:request.URL];
        return NO;
    }
    return YES;
}

每當webView即將開始加載請求時,都會調用此方法。 它所做的是檢查請求是否由用戶單擊發起。 如果是這樣,它將打開Safari並在其中加載請求。 並非通過單擊啟動的任何其他請求都將加載到您的應用程序中,例如對起始頁的請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM