【问题标题】:Open WebView links in Safari在 Safari 中打开 WebView 链接
【发布时间】:2013-03-21 00:22:01
【问题描述】:

在运行应用程序时,它首先加载,然后在 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];
}

@结束

【问题讨论】:

    标签: ios uiwebview uiwebviewdelegate


    【解决方案1】:

    在 Safari 中加载第一页而不是在您的应用中加载 UIWebView 的原因是这行代码:

    [[UIApplication sharedApplication] openURL:url];
    

    从您的 viewDidLoad 方法中删除这一行。

    为了在 Safari 应用程序中加载 webView 中的链接,首先在 viewDidLoad 方法中使用 webView.delegate = self; 将您的视图控制器设置为 webView 的委托。

    然后将以下代码添加到您的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 并在那里加载请求。任何其他不是由点击发起的请求都会加载到您的应用程序中,例如对您的起始页的请求。

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 2012-05-10
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多