繁体   English   中英

尝试使用Safari打开UIWebView链接

[英]Trying to open a UIWebView link with Safari

嗨,我有一个小问题。 我已尝试过使用此主题找到的所有类型的解决方案(减去过时的代码),以获取UIWebView链接以弹出Safari并将其加载到那里。

到目前为止,我可以获取要加载到模拟器中的特定大小,但是每次单击它时,它就会立即加载到那里。 我必须错过主要步骤,否则AppDelegate .h .mViewController .h .m完全混乱了。

我热衷于为第三代iPod / iPhone设备编码。 我知道Xcode喜欢更新很多,并且我有5.0.2版本。 从本质上来说,我已经退出游戏了一段时间了,所以我基本上还是No0b。

如果您有任何提示,请告诉我。 除了放弃。 大声笑。 我知道可以做到的。 这就是我所拥有的...

#import "WIAppDelegate.h"

@implementation WIAppDelegate

- (BOOL)webview:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
   navigationType:(UIWebViewNavigationType)navigationType {
    // This practically disables web navigation from the webView.
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return FALSE;
    }
    return TRUE;
}


#import <UIKit/UIKit.h>

@interface WIViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIWebView *webview;

@end

#import "WIViewController.h"

@interface WIViewController ()

@end

@implementation WIViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *fullURL = @"http://THESITE.com";
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [_webview loadRequest:requestObj];
}

@end

您需要在充当UIWebViewDelegate的类上实现webview:shouldStartLoadWithRequest:navigationType:方法

这很可能存在于WIViewController类中

@implementation WIViewController

- (void)viewDidLoad
{
  [super viewDidLoad];

  NSString *fullURL = @"http://THESITE.com";
  NSURL *url = [NSURL URLWithString:fullURL];
  NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
  [_webview loadRequest:requestObj];
  _webview.delegate = self;
}

- (BOOL)webview:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
  if (UIWebViewNavigationTypeLinkClicked == navigationType) {
    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
  }
  return YES;
}

@end

您还需要确保将此类实际设置为UIWebViewDelegate我将其作为viewDidLoad的最后一行,但如果愿意,可以将其挂接到xib中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM