2013-03-20 29 views
1

好的,下面的代码获取UIWebView中加载的页面的标题,然后检查标题是否包含单词“table ”。如果确实如此,它会取消隐藏工具栏。如果没有,则隐藏工具栏。当标题中没有“table”的页面加载时,以及当您浏览到标题中显示工具栏的“table”的页面时,此功能首先运行正常。当您回到标题中没有“表格”的页面时,会出现问题,新标题出现在NSLog中,但工具栏不会消失。iOS获取UIWebView标题并检查它是否包含字符串,但是如果只发生一次

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

EDIT 2执行这样的:我现在已经在NSLogs加火时,如果运行:

if ([webtitle rangeOfString:@"Table"].location == NSNotFound) { 
    NSLog(@"Hidden"); 
    [toolbar setHidden:YES]; 
} else { 
    NSLog(@"Not Hidden"); 
    [toolbar setHidden:NO]; 
} 

“隐藏” 是当你浏览到一个没有“table”的页面时返回,但工具栏仍然显示,所以它看起来像思想[toolbar setHidden:YES];由于某种原因不工作。有人有任何线索吗?

+0

检查表是否与比较(大写,小写)相同的情况下 – 2013-03-20 11:40:04

+0

你在哪里写了这段代码在viewdidload? – Dhara 2013-03-20 11:53:29

+0

请参阅上述有关执行的更新。 – Compy 2013-03-20 12:05:56

回答

0

我不确定您是在webview内还是在您的视图控制器内进行导航。

如果您在您的视图控制器内导航,那么你也可以检查为主题逻辑在

-(void)viewWillAppear { 
} 

-(void)viewDidAppear { 
} 

当您返回到页面

如果你正在你的网页视图中浏览 - 点击链接等,你可能需要创建一个UIWebView的子类并覆盖下面的方法并检查你的标题:

-(void)goBack { 
    [super goBack]; 
     //perform check here 
} 

-(void)goForward { 
} 

希望帮助

1

相反的是,很多人预测,webViewDidFinishLoad:可能之前的页面已实际完成加载多次调用。实际上,每当webview完成加载帧时调用它。从documentation

webViewDidFinishLoad: 
Sent after a web view finishes loading a frame. 

话虽这么说,尽量使用断点调试。向[toolbar setHidden:YES];行添加一个断点,并在[toolbar setHidden:NO];上添加另一个断点,并确定哪个断点最后被调用。我猜这可能是第二个。

+0

好吧,我试过了,它似乎执行[toolbar setHidden:YES];持续。它并没有真正执行它!我也试过[toolbar removeFromSuperview];并且在酒吧出现后它也不起作用。我真的不明白这里发生了什么。 – Compy 2013-03-20 13:09:47

+0

@Adam是您的ViewController在NavigationController中? – Cezar 2013-03-20 13:14:07

相关问题