【问题标题】:How to detect a click event in a UIWebView如何检测 UIWebView 中的点击事件
【发布时间】:2012-02-08 15:43:53
【问题描述】:

我有一个 UITableView,可以像这样将内容加载到 UIWebView 中:

//MainViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
      CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ];
      UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:bounds];
      UIWebView *htmlView = [ [ UIWebView alloc ] initWithFrame:[scrollView bounds]];
htmlView.frame = CGRectMake(10,10,280,360);
      NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    //Load the request in the UIWebView.
    [htmlView loadRequest:requestObj];

    scrollView.contentSize = [htmlView bounds].size;
    [scrollView addSubview:htmlView];    
    [detailsViewController.view addSubview:htmlView];


    [htmlView release];
    htmlView = nil;

    [scrollView release];
    scrollView = nil;


   [[self navigationController] pushViewController:detailsViewController animated:YES];
   [detailsViewController release];

}

提供给 UIWebView 的所有远程内容都来自我编写的 Web 服务。第一个屏幕截图是从标题为“词汇表”的列表视图中选择一个词时显示的内容

这一切都很好,直到您点击链接,在这种情况下单击 UIWebView 内容中的“框架”链接。新内容已加载,但我需要告诉导航栏 UIWebView 已更改,因此我至少可以更改白色标题文本以匹配新内容。我应该实现哪些 UIWebView 方法以及它们应该去哪里?

【问题讨论】:

  • 谢谢!我根据您发布的链接实现了该方法。事件发生时会自动调用该方法还是我需要显式调用它?
  • 如果您将视图控制器设置为 webview 委托,它会被 webview 自动调用。

标签: ios uiwebview uinavigationcontroller uinavigationbar


【解决方案1】:

将您的视图控制器设置为 UIWebView 的委托,然后实现

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

【讨论】:

  • 嗯。以为会做到的。将 UIWebViewDelegate 添加到我的视图控制器的头文件中:@interface MainViewController : UITableViewController {...} 并在 .m 文件中实现了方法,但是单击链接后,执行没有进入实现的方法中我在这些方法中的断点从未被击中就证明了这一点......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多