2013-08-27 7 views
7

Ich habe recherchiert und recherchiert und immer noch nicht verstehen, warum sollteStartLoadWithRequest nie aufgerufen werden. Meine Seite wird geladen und einige der UIWebview-Delegate-Protokollmethoden werden aufgerufen. Bitte finden relevante Auszüge aus meinem Code unten:shouldStartLoadWithRequest heißt nie

mein webview Synthetisiere in meinem .m (in einer Header-Datei definiert):

@implementation PortViewController 

@synthesize WebView = myWebView; 

ich erfolgreich meine webview laden:

myURLString = [NSString stringWithFormat:@"https://%@", defaultWebsite]; 

    myURL = [NSURL URLWithString: myURLString]; 
    NSURLRequest *myRequest = [NSURLRequest requestWithURL:myURL]; 
    [myWebView loadRequest:myRequest]; 

gesetzt mein Delegieren Sie an sich

- (void)viewDidLoad 
{ 


[super viewDidLoad]; 
[myWebView setOpaque:NO]; 
[myWebView setBackgroundColor:[UIColor clearColor]]; 

//myWebView.description. 

myWebView.delegate = self; 
} 

alle meine Protokollmethoden heißen EXCEPT sustainStartLoadW iRequest

- (void)webViewDidStartLoad:(UIWebView *)myWebView { 
    [activityIndicator startAnimating]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)myWebView { 
    [activityIndicator stopAnimating]; 
} 

- (BOOL)WebView:(UIWebView *)myWebView shouldStartLoadWithRequest:(NSURLRequest *)request   navigationType:(UIWebViewNavigationType)navigationType { 

NSLog(@"inside Webview"); 
if([[request.URL absoluteString] hasPrefix:@"http://www.nzx"]) { 
    // do stuff 
    NSLog(@"Have caught the prefix"); 
    return YES; 
} 

    return NO; 
} 

Vielen Dank im Voraus.

+1

Ist es ein Tippfehler oder Sie haben tatsächlich falsche Methode implementiert? WebView: shouldStartLoadWithRequest: navigationType: '? Das 'W' sollte klein sein' webView'. – Amar

Antwort

1

Delegatmethode sollte sein:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

Und wenn Sie UIWebView in xib haben, dann haben Sie wahrscheinlich versuchen Anfrage zu laden, wenn UIWebView nil

ist

So stellen Sie sicher, Ihre myWebView Instanz vorhanden ist.

+2

Es war das eigenwillige Kleinbuchstabe "Danke". Ich bin unterwegs, um ein paar Brillen zu kaufen. – user2720747

+0

deshalb "Autovervollständigung" für. Von dem Moment an, in dem Sie Ihre Klasse für ein Protokoll deklariert haben, können Sie nur Methoden mit Autovervollständigung für diesen Delegaten eingeben – Injectios

13

Versuchen Sie, die Delegierten in ViewWillAppear statt ViewDidLoad

-(void)viewWillAppear:(BOOL)animated 
{ 
    myWebView.delegate = self; 
} 

und schließen die Webansicht Delegierten in Ihrer Schnittstelle von PortViewController.m

@interface PortViewController()<UIWebViewDelegate> 


@end 

Es sollte funktionieren Datei einstellen.

+0

danke !! ausgezeichnete Antwort. Sie können es vereinfachen, indem Sie nicht die Schnittstelle zu PortViewController() festlegen müssen –