问题
I have created a NSObject class and included , in the init i create a uiwebview set the delegate to self and send the load request.
For some reason webViewDidFinishLoad or didFailLoadWithError never get fired. I can't figure why.
//
// RXBTest.h
#import <Foundation/Foundation.h>
@interface RXBTest : NSObject <UIWebViewDelegate>
@end
// RXBTest.m
// pageTest
#import "RXBTest.h"
@implementation RXBTest
- (id) init
{
if((self=[super init])){
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
[webView setDelegate:self];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
}
return self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
NSLog(@"finished");
}
@end
anybody has any ideas?
thanks rudi
回答1:
If you are using ARC, then the problem is that your webView
variable is local to the init
method and therefore is getting deallocated before the web view finishes loading. Try adding the web view as an instance variable:
@interface RXBTest : NSObject <UIWebViewDelegate>
{
UIWebView* webView;
}
@end
@implementation RXBTest
- (id) init
{
if((self=[super init])){
webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
[webView setDelegate:self];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
}
return self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
NSLog(@"finished");
}
@end
If you are not using ARC, you will need to remember to release your webView
object in the dealloc method as well.
回答2:
you forgot to add this in your header file (.h):
#import <UIKit/UIWebView.h>
来源:https://stackoverflow.com/questions/14613098/uiwebview-not-loading-request-even-with-delegate-self