我试图覆盖UIWebView对象中的URL点击。我知道我需要在'webView委托设置'的位置添加以下代码(根据this thread):
// 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方法。
真的很挣扎,可能是因为我不知道代表的位置。
答案 0 :(得分:1)
并且,指定我的自定义UIView对象(调用UIWebView对象)的'm'文件没有viewDidLoad方法。
将其放入- initWithFrame:
方法中:
- (id)initWithFrame:(CGRect)frm
{
if ((self = [super initWithFrame:frm])) {
webView = [[UIWebView alloc] initWithFrame:frm]; // or whatever
self.webView.delegate = self;
}
return self;
}