我正在尝试使其仅在用户按下链接和/或canGoBack = TRUE时启用后退按钮。我尝试在主体中使用if语句,但这没有用。然后,我尝试使用可以在网上找到的内容,但仍然无法正常工作。我的代码如下。我究竟做错了什么?谢谢!
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType{
if (navigationType == UIWebViewNavigationTypeLinkClicked)
{
NSString *url = webView.request.URL.absoluteString;
NSURL *nsurl = [NSURL URLWithString:url];
NSURLRequest *nsrequest = [NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
backButton.enabled = TRUE;
}
return TRUE;
}
最佳答案
如果尚未设置Web视图的委托,则不会调用shouldStartLoadWithRequest()。
为了使用UIWebView,通常将其设置为视图控制器的outlet属性,因此您应该具有以下内容:
IBOutlet UIWebView* webView;
webView有一个委托属性,需要对您的视图控制器进行设置,您可以在情节提要中设置委托,但在代码中对其进行设置更为明确:
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView.delegate = self;
您有99%的时间只是设置了委托,但UIWebView的委托很有趣,因为完成后需要将其设置为nil。因此添加:
- (void)viewDidUnload
{
[self.webView stopLoading];
self.webView.delegate = nil;