我已经研究过并且仍然不明白为什么永远不会调用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;
}
提前致谢。
答案 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实例存在。