2011-04-20 51 views
0

我已經設置了一個使用UIWebView的應用程序。 UIWebView用於顯示用CSS格式化的文本。在文本中是鏈接(a href = ...)。 href的格式如下:tags.tagnameUIWebView&ShouldStartLoadWithRequest

當用戶點擊一個鏈接時,我想攔截請求並使用基於HREF內容的loadHTMLString。

我已經成功解析了URL,但是我不知道如何告訴webview無法加載請求的href並加載我想要的字符串。

我已經試過內ShouldStartLoadWithRequest如下:

genHTML=[self genTagPage:parsedString]; // a string declared earlier 
[self.noteHTML loadHTMLString:genHTML baseURL:nil]; 
return NO; 

但在執行代碼時,我收到以下錯誤:

2011-04-19 22:39:21.088 TestApp[27026:207] *** -[_PFArray release]: message sent to deallocated instance 0xaa3cf40 

GENHTML是越來越填入正確的數據,所以我不知道如何繼續。

謝謝。

回答

3

這聽起來像你只需要以防止類似下面的鏈接默認動作:

<a href="somewhere.html" onClick="doSomething(); return false"> 

退房quirksmode瞭解更多詳情。

編輯: 重新讀您的原始代碼,它似乎你有一個無限循環繼續。當點擊鏈接時,shouldStartLoadWithRequest被調用一次,然後在你的loadHTMLString行上無限次地調用它。以導航類型爲條件調用應該可以解決您的問題:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if(navigationType==UIWebViewNavigationTypeLinkClicked) 
    { 
     genHTML=[self genTagPage:parsedString]; // a string declared earlier 
     [self.noteHTML loadHTMLString:genHTML baseURL:nil]; 
     return NO; 
    } 
    return YES; 
} 
+0

不需要。我需要點擊才能發生,並且IOS會觸發一個事件。這樣,我知道鏈接已被點擊,然後我可以解析鏈接要求的內容並計算並顯示所需的信息。我只是不想讓原來的鏈接加載 - 它不會 - 沒有什麼。它是真正需要的描述符。 – Chris 2011-04-20 14:14:08

+0

@Chris檢查我的更新答案,我認爲應該把你排除在外。 – Sam 2011-04-21 00:54:16

+0

謝謝!我無法解決如何正確處理導航類型,這個例子幫助我解決了我所處的無限循環。 – 2015-04-16 16:31:45