好的,所以下面的代码获取在UIWebView中加载的页面的标题,然后检查标题是否包含单词“table”。如果是,则取消隐藏工具栏。如果没有,则隐藏工具栏。当标题中没有“表格”的页面加载时,以及当您浏览到标题中显示工具栏的“表格”的页面时,此工作正常。当您返回标题中没有“表格”的页面时会出现问题,新标题出现在NSLog中,但工具栏不会消失。
NSString * webtitle = [viewWeb stringByEvaluatingJavaScriptFromString:@"document.title"];
NSLog(@"Title is: %@", webtitle);
if ([webtitle rangeOfString:@"Table"].location == NSNotFound) {
[toolbar setHidden:YES];
} else {
[toolbar setHidden:NO];
}
感谢任何帮助。
谢谢!
编辑:我应该说我在
中执行此操作 - (void)webViewDidFinishLoad:(UIWebView *)wv
{
}
编辑2:我现在已经在NSLogs中添加,以便在if运行时触发:
if ([webtitle rangeOfString:@"Table"].location == NSNotFound) {
NSLog(@"Hidden");
[toolbar setHidden:YES];
} else {
NSLog(@"Not Hidden");
[toolbar setHidden:NO];
}
当您浏览到没有“表格”的页面时会返回“隐藏”但工具栏仍然显示,因此它看起来像是[toolbar setHidden:YES];由于某种原因不起作用。有没有人有任何线索?
答案 0 :(得分:1)
与许多人的期望相反,在页面实际加载之前可能会多次调用webViewDidFinishLoad:
。实际上,每次webview完成加载帧时都会调用它。来自documentation:
webViewDidFinishLoad: Sent after a web view finishes loading a frame.
话虽如此,尝试使用断点进行调试。在[toolbar setHidden:YES];
行添加一个断点,在[toolbar setHidden:NO];
添加另一个断点,并找出最后一个被调用的行。我猜它可能是第二个。
答案 1 :(得分:0)
我不确定您是在webview中还是在视图控制器中导航。
如果您在视图控制器中导航,那么您还可以在
中检查该标题逻辑 -(void)viewWillAppear {
}
或
-(void)viewDidAppear {
}
当您返回页面时
如果您在Web视图中导航 - 单击链接等,您可能需要子类化UIWebView并覆盖以下方法并检查其中的标题:
-(void)goBack {
[super goBack];
//perform check here
}
-(void)goForward {
}
希望有所帮助