2012-07-31 85 views
0

這種方法有什麼問題?WebView完成啓動不起作用

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { 
[activityIndicator stopAnimation:self]; 
} 

我想停止循環進度指示器(activityIndicator)。但- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame有什麼問題。我爲mac osx編碼,而不是iOS。我從代表處聽到了什麼,這是什麼意思?

+0

問題是什麼?該方法沒有被調用? – bejonbee 2012-07-31 22:28:15

回答

1

檢查以確保您的UIWebView已設置其委託。設置一個委託基本上是告訴程序你想處理事件的人(比如輕敲,手勢,或者在這種情況下,加載一個webView)。因此,當事件被觸發時,它會通知代表,代表可以處理它。也許如果你發佈更多的代碼會有幫助,但我會檢查你的UIWebView的聲明。要確保你給它分配和初始化後,您的委託設置爲self(假設該方法是在同一個班),像這樣:

UIWebView *myWebView = [[UIWebView alloc] init]; 
[myWebView setDelegate:self]; 

如果您還沒有設置委託,這是射擊沒有人接受他們來處理他們。您正在使用的方法正在等待任何webView發送的特定事件。當它發送一個事件消息時,它將作爲參數傳遞觸發的webView。無論如何,請輸入日誌聲明以確保您正在輸入方法。這會告訴你它是否收到事件消息。

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { 
    NSLog(@"Did finish loading..."); 
    [activityIndicator stopAnimation:self]; 
} 

注意:這是按照iOS的經驗,但也應該適用於Mac OS。讓我知道你的日誌結果是什麼,如果該方法被調用或不。

+0

對於Mac OS X,它被稱爲'WebView'(而不是'UIWebView'),並且所討論的委託是框架加載委託,因此'[myWebView setFrameLoadDelegate:self]'。這是這裏的主要區別。 – Vervious 2012-08-01 01:07:19

+2

正如我最近發現的,webView:didFinishLoadForFrame:在OS X上被稱爲早期調用,即使確保frame參數是主框架:在文檔邊界是正確的之前,有人說在DOM完成之前建立。而是觀察WebView的進度通知WebViewProgressStartedNotification WebViewProgressEstimateChangedNotification和WebViewProgressFinishedNotification。 – 2012-08-25 22:25:12