【问题标题】:iOS gets UIWebView title and checks if it contains a string, but the if only occurs onceiOS 获取 UIWebView 标题并检查它是否包含字符串,但 if 只出现一次
【发布时间】:2013-03-20 11:34:39
【问题描述】:

好的,下面的代码获取加载到 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];由于某种原因无法正常工作。有人有线索吗?

【问题讨论】:

  • 检查表格是否与比较的大小写相同(大写,小写)
  • 你在 viewdidload 哪里写了这段代码?
  • 请参阅上面有关 if 执行的更新。

标签: ios objective-c xcode uiwebview uiwebviewdelegate


【解决方案1】:

与许多人的预期相反,webViewDidFinishLoad: 可能会在页面实际完成加载之前被调用多次。实际上,每次 webview 完成加载帧时都会调用它。来自documentation

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

话虽如此,请尝试使用断点进行调试。在[toolbar setHidden:YES]; 行中添加一个断点,在[toolbar setHidden:NO]; 上添加另一个断点,并找出最后调用的断点。我猜它可能是第二个。

【讨论】:

  • 好的,我试过了,它似乎执行了 [toolbar setHidden:YES];最后的。它实际上并没有执行它!我也试过 [工具栏 removeFromSuperview];并且在栏出现后它也不起作用。我真的不明白这里发生了什么。
  • @Adam 是 NavigationController 中的 ViewController 吗?
【解决方案2】:

我不确定您是在 webview 中还是在视图控制器中导航。

如果您在视图控制器中导航,那么您还可以在

中检查该标题逻辑
 -(void)viewWillAppear {
 }

 -(void)viewDidAppear {
 }

当您返回页面时

如果您在 Web 视图中导航 - 单击链接等,您可能需要子类化 UIWebView 并覆盖以下方法并检查其中的标题:

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

 -(void)goForward {
 }

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 2011-07-11
    • 2013-08-16
    • 2010-12-27
    • 2017-07-04
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多