永远不会调用shouldStartLoadWithRequest

时间:2013-08-27 08:29:53

标签: ios methods protocols uiwebviewdelegate

我已经研究过并且仍然不明白为什么永远不会调用StartStoadWithRequest。我的页面加载正常,并调用了一些UIWebview委托协议方法。请从以下代码中找到相关摘要:

在我的.m中合成我的webview(在头文件中定义):

@implementation PortViewController

@synthesize WebView = myWebView;

我成功加载了我的网页视图:

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

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

将我的代表设为自己

- (void)viewDidLoad
{


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

//myWebView.description.

myWebView.delegate = self;
}

我的所有协议方法都被称为EXCEPT shouldStartLoadWithRequest

- (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;
}

提前致谢。

2 个答案:

答案 0 :(得分:13)

尝试在ViewWillAppear而不是ViewDidLoad

中设置委托
-(void)viewWillAppear:(BOOL)animated
{
     myWebView.delegate = self;
}

并在您的PortViewController.m文件接口中包含webview委托

@interface PortViewController ()<UIWebViewDelegate>


@end

它应该有用。

答案 1 :(得分:1)

委托方法应该是:

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

如果您在xib中有UIWebView,那么当UIWebView为零时,您可能正在尝试加载请求

因此请确保您的myWebView实例存在。