2012-10-30 149 views
0

我想覆蓋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方法。

真的很難與此,大概是因爲我不知道代表設置在哪裏。

回答

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; 
} 
+0

謝謝!這是一種享受。我*做*雖然獲得警告;從不兼容的類型' *'分配給'id '。似乎工作,雖然...謝謝! – CaptainProg

+0

@CaptainProg你**需要**以符合'UIWebViewDelegate'協議... – 2012-10-30 23:31:30

+0

..所以我可以忽略警告? – CaptainProg