我正在尝试覆盖 UIWebView 对象中的 URL 点击。我知道我需要在“设置 webView 委托”的位置添加以下代码(根据此线程):
// TODO: This should intercept URL clicks in a UIWebView, causing (for now) links to open in Safari. It doesn't work yet; possibly it's in the wrong place. Should be in the same place as we 'set the webView delegate'...
// This doesn't appear to be set anywhere yet, which is probably where I'm going wrong.
- (BOOL)webView: (UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*)request navigationType: (UIWebViewNavigationType)navigationType {
if ( navigationType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
return YES;
}
但是,我不知道在哪里实际放置代码。关于上述线程的一个建议是将它放在 viewDidLoad 方法中,在“self.webView.delegate = self;”的一行下方。但是,我的 UIWebViews 实际上是自定义 UIView 的一部分,它的调用方式很像 UIAlertView(实际上,它几乎是 UIAlertView 的精确复制品,除了它包含 UIWebView)......所以,我的主应用程序的 ViewController 代码没有“看到” self.webView 对象,所以我不能在那里设置委托。而且,指定我的自定义 UIView 对象(调用 UIWebView 对象)的“m”文件没有 viewDidLoad 方法。
真的很挣扎,大概是因为我不知道代表在哪里设置。