我在webViewDidFinishLoad委託方法裏面有一些代碼,並且我需要一些方法來告訴這個代碼已經完成了從我的代碼的完全不同部分的另一個方法中執行。這可能嗎?基本上我想要做的是這樣的:iOS如何判斷webViewDidFinishLoad何時完成?
-(void) myMethod
{
// do stuff that causes webViewDidFinishLoad to be called
if (webViewDidFinishLoad has finished executing)
{
// do stuff with outputString
}
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
outputString = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"myJSFunction('%@')",jsInputString]];
}
我看着this answer已經和它沒有任何意義了我。
我應該在myMethod中添加,我可以確定webViewDidFinishLoad只會被調用一次。
我認爲,當發現需要阻塞主線程等待委託或通知時,這是一種代碼味道。你想要完成什麼?也許有另一種方法來解決你的問題。 –
Carl,我的webViewDidFinishLoad委託方法包含對stringByEvaluatingJavaScriptFromString的調用。在繼續使用myMethod中的代碼之前,我需要調用的結果。 – JMLdev
然後,如果可能,請在網絡視圖加載完成之前不要調用myMethod。如果它從用戶輸入禁用相關的控件,直到加載後。這會工作嗎? –