iPhone - webViewDidFinishLoad не вызывается

У меня есть простой вид в IB, который содержит только UIWebView и UIButton.
WebView сохранен, подключен, а не nil, свойство делегата также подключено, контроллер 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: больше никаких проблем. ИБ иногда сосет.

4 ответа

Решение

Я удалил весь XIB и построил его заново с нуля: больше никаких проблем. ИБ иногда сосет.

Вам необходимо реализовать UIWebViewDelegate протокол в вашем классе и установить свойство делегата self.webView = self, Вам нужно будет реализовать не опциональные методы делегата для класса, плюс webViewDidFinishLoad, didFailLoadWithError а также webViewDidStartLoad методы.

Просто удар в темноте. Что касается приведенного выше кода, вы все еще не установили отвечающий объект делегату webView, вы установили указатель на объект делегата webView, но когда webView переходит к ответу делегату, он все равно будет равен нулю.

Вы, вероятно, должны иметь: self.webView.delegate = a; но даже тогда я не знаю, сработает ли это, потому что я не знаю, что это, - это объект, который будет отвечать на обратные вызовы делегата?

Вы должны реализовать UIWebViewDelegate протокол в вашем классе и установить self.webView.delegate=self;

Другие вопросы по тегам