2013-04-12 30 views
5

Tôi có một số UIWebView hoạt động tốt. Đại biểu đang làm việc. Khi tôi mở URL, các sự kiện shouldStartLoadWithRequestwebViewDidFinishLoad được kích hoạt.ios - UIWebView DidFinishLoad không được gọi là

Nhưng khi ví dụ tôi nhấp vào kết quả tìm kiếm của Google, chỉ shouldStartLoadWithRequest được kích hoạt và webViewDidFinishLoad không bao giờ được gọi.

Điều này gây ra sự cố bởi vì nếu tôi đặt chỉ báo "loading ..." trên shouldStartLoadWithRequest, trong những trường hợp này, chỉ báo vẫn còn ngay cả sau khi trang được tải chính xác.

Bất kỳ ý tưởng nào tại sao điều này đang xảy ra?

+1

đặt đại biểu cho chế độ xem web của bạn –

+2

Đăng một số mã. –

Trả lời

0

Không phải chuyên gia về API Google, nhưng như tôi nghi ngờ đây có thể là reason của bạn.

1

trong file .h thêm <UIWebViewDelegate>

và trong .m:

yourWebview=[[UIWebView alloc]init]; 
yourWebview.delegate=self; 
+1

Ông tuyên bố rằng đại biểu đã được thiết lập và làm việc. –

+0

@Thedude: Tôi biết điều đó. Nhưng anh ấy đã không đăng bất kỳ mã nào. Tôi chỉ có thể đoán được khả năng. Và ở trên dường như là khả năng tốt nhất. –

1

Khi bạn bấm vào tìm kiếm, navigationType là UIWebViewNavigationTypeFormSubmitted. Vì vậy, trong trường hợp này, kiểu trả về phải là YES. Nếu không, phương thức webViewDidFinishLoad không được kích hoạt.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"shouldStartLoadWithRequest"); 

    if (navigationType == UIWebViewNavigationTypeLinkClicked){ 
     NSLog(@"UIWebViewNavigationTypeLinkClicked"); 

     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeFormSubmitted) { 
     NSLog(@"UIWebViewNavigationTypeFormSubmitted"); 
     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeBackForward) { 
     NSLog(@"UIWebViewNavigationTypeBackForward"); 
     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeFormResubmitted) { 
     NSLog(@"UIWebViewNavigationTypeFormResubmitted"); 
     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeReload) { 
     NSLog(@"UIWebViewNavigationTypeReload"); 
     return YES; 
    } 



    return YES; 
} 
1

Vấn đề này thường được tìm thấy trên các ứng dụng ipad .... nhưng bạn có thể giải quyết vấn đề của mình bằng cách sử dụng [self performector: afterdelay], bạn phải chọn phương thức chọn xem liệu webview có tải hay không bằng [m_pWebview được tải]; và theo đó chỉ số thực hiện dừng lại .... nó không phải là giải pháp thích hợp nhưng nó hoạt động .......

Các vấn đề liên quan