2013-06-25 2 views
-4

Когда я использую self.myWeview.delegate = self, мой экземпляр UIwebView не может загрузить URL-адрес. Если я установил его в nil, тогда методы делегата не запускаются, но загружается URL.Методы делегата UIwebView не работают, почему?

Вот мой код:

 self.myWeview.delegate = nil; 
     NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
     NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
     [myWebView loadRequest:request]; 

Он отлично работает, но не вызывать методы делегата. Вот пример, где я назначаю методы делегата:

 NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
    NSURLRequest request = [NSURLRequest requestWithURL:url]; 
    [myWebView loadRequest:request]; 

Что случилось?

+1

Что вы получили от этого метода делегата '- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest: (NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType' – samfisher

+1

Вы задали тот же вопрос *** *** около 20 минут назад ... *** НЕ НЕТ! *** –

+2

http://stackoverflow.com/questions/17289990/uiwebview-delegate-methods-not-working от того же пользователя @chandanwtb дублированный вопрос не допускается в SO – DharaParekh

ответ

5

Вы должны установить:

self.myWeview.delegate = self; 

И в файле .h:

@interface YourViewController : UIViewController<UIWebViewDelegate> 

Если вы не установить делегата self метод делегата не будет вызван.

+0

# Я делаю это в моем файле .h, но не работает # – Arjun

+0

# Я делаю это в своем .h файле, но не буду работать после настройки это мой URL-адрес не загружен, но методы называются # – Arjun

+0

URL-адрес загрузки не имеет ничего общего с настройкой делегирования на себя. Загрузите этот тестовый проект https://github.com/rptwsthi/TrickTest, в котором я проверил условие и посмотрю 'FLViewController', а затем найдите код кода для' webView' внизу в самом имени метода name id 'loadUrlOnWebView'. вы можете запустить этот проект, чтобы увидеть, что URL загружается. – rptwsthi

0

Вы должны реализовать protocolUIWebViewDelegate в .h файл , как: @interface yourClass:inheritedClass<UIWebViewDelegate> и установить делегат self.myWeview.delegate = self ;

+0

Я делаю это в моем файле .h, но не работает – Arjun

2

важно одно, что когда-либо использовать UIWebView установить его свойство «сильный» и «неатомические» вместо «сохранить».

Обычно мы используем свойство «strong» только в классе appdelegate и сохраняем в других классах viewcontroller.

Но для uiwebview в классе viewcontroller вы также должны установить свойство «strong».

+0

Я сделал это, но все же он не работает – Arjun

+0

сильный - это дуга. – Stas