iPhone - webViewDidFinishLoad не вызывается - PullRequest
3 голосов
/ 23 октября 2011

У меня есть простое представление IB, которое содержит только UIWebView и UIButton.
Веб-представление сохраняется, подключено, а не ноль, свойство делегата также подключено, контроллер соответствует 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 ]

3 голосов
/ 23 октября 2011

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

1 голос
/ 23 октября 2011

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

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

1 голос
/ 23 октября 2011

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

0 голосов
/ 09 апреля 2015

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

...