我有一个简单的 IB View ,其中仅包含一个 UIWebView 和一个 UIButton。
webView 被保留,连接,而不是 nil,委托(delegate)属性 os 也被连接, Controller 是 UIWebViewDelegate
兼容并在 .h.
中设置
在 ViewDidLoad 中,我使用 [self.webView loadHTMLString:htmlContent baseURL:nil]
;
内容已加载,但 webViewDidFinishLoad
从未触发,didFailLoadWithError
和 webViewDidStartLoad
均未触发。
我如何知道我的内容何时完成加载,因为它需要很短的时间,但仍然需要加载时间(并且我需要在显示期间执行一些操作,例如不显示按钮)?
@interface MyController : UIViewController <UIWebViewDelegate> {
UIWebView* webView;
}
@property (nonatomic, retain) IBOutlet UIWebView* webView;
@end
@implementation MyController
@synthesize webView;
- (void)viewDidLoad
{
[super viewDidLoad];
constructing the htmlString
id a = self.webView.delegate; // for debug
[self.webView loadHTMLString:htmlContent baseURL:nil];
}
@end
编辑: 我已经删除了整个 XIB 并从 scrathc 构建了它:不再有问题。 IB 有时很糟糕。
最佳答案
您需要在类中实现UIWebViewDelegate
协议(protocol)并设置self.webView = self
的委托(delegate)属性。您需要为该类实现非可选委托(delegate)方法,以及 webViewDidFinishLoad
、didFailLoadWithError
和 webViewDidStartLoad
方法。
关于iPhone - webViewDidFinishLoad 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7862962/