2012-11-26 46 views
0

在我的APP中需要大約10s到loadHTMLString,誰可以指出問題所在?爲什麼UIWebView在使用UIWebView時loadHTMLString會如此緩慢地工作?

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    webView = [[UIWebView alloc]initWithFrame:CGRectMake(10, 10, SCREEN_WIDTH, 480)]; 
    [webView setBackgroundColor:[UIColor clearColor]]; 
    [webView setOpaque:NO]; 
    webView.delegate = self; 
    [scrollView addSubview:webView]; 
} 

進入查看後,如果我收到消息:

- (void)updateJournalView:(NSArray *)journals { 
    NSString *descHtml = [self getHtmlDesc:journals]; 
    [webView loadHTMLString:descHtml baseURL:nil]; 
} 

getHtmlDesc方法將很快返回HTML字符串。

從加載日誌中,您可以看到它需要大約5秒才能加載。

2012年11月26日20:34:35.322測試[8456:C07] ====啓動負載2012年11月26日12時34分35秒0000:

2012年11月26日20: 34:39.890測試[8456:C07] ====光潔度負載2012年11月26日12時34分39秒0000:

以下是UIWebViewDelegate方法:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView { 
CGRect frame = aWebView.frame; 
frame.size.height = 1; 
aWebView.frame = frame; 
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero]; 
frame.size = fittingSize; 
aWebView.frame = frame; 
scrollView.contentSize = CGSizeMake(SCREEN_WIDTH, fittingSize.height); 
NSLog(@"====finish load %@:", [NSDate date]); 
} 

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
navigationType:(UIWebViewNavigationType)navigationType { 
    NSURL *url = [request URL]; 
    if ([[url scheme] isEqualToString:@"redirect"] && 
    [[url host] isEqualToString:@"opp_detail"]) { 
    NSString *oppIdStr = [[url path] stringByReplacingOccurrencesOfString:@"/player_id=" withString:@""]; 
    if (oppIdStr && [oppIdStr length]) { 
    NSNumber *oppId = [NSNumber numberWithInt:[oppIdStr intValue]]; 
    if ([oppId intValue] != gcontext.me.id) { 
     [screenNav gotoOppDetailScreen:[oppId intValue]]; 
    } 
    } 
} 
return YES; 
} 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
navigationType:(UIWebViewNavigationType)navigationType { 
NSURL *url = [request URL]; 
if ([[url scheme] isEqualToString:@"redirect"] && 
    [[url host] isEqualToString:@"opp_detail"]) { 
    NSString *oppIdStr = [[url path] stringByReplacingOccurrencesOfString:@"/player_id=" withString:@""]; 
if (oppIdStr && [oppIdStr length]) { 
    NSNumber *oppId = [NSNumber numberWithInt:[oppIdStr intValue]]; 
    if ([oppId intValue] != gcontext.me.id) { 
    [screenNav gotoOppDetailScreen:[oppId intValue]]; 
    } 
} 
} 
return YES; 
} 

- (void)webViewDidStartLoad:(UIWebView *)webView{ 
    NSLog(@"====start load %@:", [NSDate date]); 
} 

請給我一隻手,爲什麼loadHTMLStringUIWebView這麼慢?

+0

請勿在ScrollView中添加webView,因爲WebView默認值包含ScrollView。如果內容需要很長時間以表示可見的webView大小,則webView將自動使用ScrollView來表示內容 – iDhaval

回答