3

У меня есть простой вид в IB, который содержит только UIWebView и UIButton.
WebView сохранен, подключен, а не nil, свойство делегата os также подключено, контроллер UIWebViewDelegate совместим и установлен в .h.
в ViewDidLoad, я использую [self.webView loadHTMLString:htmlContent baseURL:nil];iPhone - webViewDidFinishLoad не называется

Содержимое загружается, но 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 

EDIT: Я удалил весь XIB и построил его из scrathc: не больше проблем. Иногда IB отстой.

+0

ли htmlcontent не ноль? Покажите код для загрузки. – logancautrell

+1

Должен ли быть вызван вызовStartLoadWithRequest? – logancautrell

+0

@logancautrell: shouldStartLoadWithRequest не называется – Oliver

ответ

1

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

3

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

+0

См. Мое редактирование, хотя я был ясен, но я не был: делегат связан. – Oliver

1

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

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

+0

, как сказано в вопросе, делегат связан (т.е. с IB). id a здесь только для целей тестирования (т.е. для отладки). – Oliver

-1

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

Смежные вопросы