0

我正在尝试覆盖 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 方法。

真的很挣扎,大概是因为我不知道代表在哪里设置。

4

1 回答 1

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;
}
于 2012-10-30T23:23:39.910 回答