網頁

2012年11月23日 星期五

iOS開發筆記-WebView中點擊link直接開browser以及放在UIScroll中會有的問題

有個需求
  1. 在一個上View載入不知多長的網頁,不要用到WebView的scroll
  2. 點擊上面的link,是開browser瀏覽

基本上在UIWebView Class Reference提到
Important: You should not embed UIWebView or UITableView objects in UIScrollView objects. If you do so, unexpected behavior can result because touch events for the two objects can be mixed up and wrongly handled.

不過還是有人提出方法解決,用以下的方式就可以解,可能只是walk around的方式,不過用了至少可以達到我要的需求
webView.opaque = YES;

可以放在UIScroll下後,就解決長度問題,可以用iOS開發筆記-動態更動UIWebView的長度,達到第一個需求

再來第二個,保有WebView目前在看的,要看內容開瀏覽器,在WebViewDelegate中有個function:
(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
可以達到這要求

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }
    return YES;

}

紅字部分就是要求另開app打開url,由os自動決定(似乎就是看預設是哪個app開啟)

參考網址:
UIWebView cannot click link
iPhone: After UIWebView opens external browser, then retruning to app opens it a second time

另外:

沒有留言:

張貼留言