在Safari中打开URL时未知的东西

时间:2012-01-17 12:24:39

标签: iphone objective-c ios xcode uiwebview

人。我正试图在safari中实现从我的webView打开链接。有时它工作得很完美,有时表现出很糟糕的访问。 这是我的代码:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    urlWillShow = [request mainDocumentURL];
    return YES;   
}
- (IBAction)openInSafari {
        NSLog(@"Will try to open in safari link: %@", [urlWillShow absoluteString]);
    if ([[urlWillShow scheme] isEqualToString:@"http"] || [[urlWillShow scheme] isEqualToString:@"https"]) {
        BOOL canLoad = [[UIApplication sharedApplication] canOpenURL:urlWillShow];
        if (canLoad == YES) {
            [[UIApplication sharedApplication] openURL:urlWillShow];
        }
    }
}

1 个答案:

答案 0 :(得分:0)

使用[request URL]代替[request mainDocumentURL]

此外,您需要保留(如果不使用ARC)urlWillShow,因为它可能会在您的操作被调用之前被释放。

或者,将UIWebView设为IBOutlet,而不是将urlWillShow存储在ivar中,您可以在操作方法中使用[[self.webView request] URL]。