ios – 永远不会调用shouldStartLoadWithRequest

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

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

@implementation PortViewController

@synthesize WebView = myWebView;

我成功加载了我的webview:

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

提前致谢.

解决方法

尝试在ViewWillAppear而不是ViewDidLoad中设置委托
-(void)viewWillAppear:(BOOL)animated
{
     myWebView.delegate = self;
}

并在您的PortViewController.m文件的界面中包含webview委托

@interface PortViewController ()<UIWebViewDelegate>


@end

它应该工作.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...