【问题标题】:UIWebView on top of UITableView - how to switch between them?UITableView 之上的 UIWebView - 如何在它们之间切换?
【发布时间】:2012-09-07 02:54:52
【问题描述】:

好的,我有一种情况,用户在我的应用程序中查找一个词。关于单词的静态信息显示在屏幕的顶部 1/3。用户可以在屏幕底部 2/3 看到更多关于这个词的信息。此信息通过两个不同的视图显示...

第一个视图是显示用户活动的 UITableView,另一个是在互联网上查找单词的 UIWebView。我只是将 UIWebView 放在 UITable 视图的顶部,当用户按下按钮时,我只是隐藏/取消隐藏 UIWebView。

一切都很好,除了任何用户交互始终与 UIWebView 交互,即使它被隐藏,所以用户无法在现在可见的 UITableView 中滚动。

有没有一种简单的方法可以“停用” UIWebView,从而允许用户在隐藏在下面的 UITableView 中滚动?

现在的相关代码是:

- (IBAction)pressDictionaryTab:(id)sender {
    webView.hidden = NO;
}

- (IBAction)pressHistoryTab:(id)sender {
    webView.hidden = YES;
}

干杯:-)

【问题讨论】:

    标签: iphone uitableview uiwebview show-hide user-interaction


    【解决方案1】:

    除了隐藏,可以试试sendSubviewToBack,像这样:

    - (IBAction)pressDictionaryTab:(id)sender {
        webView.hidden = NO;
        tableView.hidden = YES;
        [self.view sendSubviewToBack:tableView];
    }
    
    - (IBAction)pressHistoryTab:(id)sender {
        webView.hidden = YES;
        tableView.hidden = NO;
        [self.view sendSubviewToBack:webView];
    }
    

    【讨论】:

    • 感谢danh,这是一个非常有用的功能,我肯定会使用它。我已经解决了这个问题,实际上是因为 webview 嵌入在滚动视图中,所以当我隐藏 webview 时,滚动视图仍然在 tableview 的顶部......解决方案:隐藏滚动视图,但是你的代码也可以工作。
    【解决方案2】:

    来自 UIWebView 文档:

    重要您不应该在 UIScrollView 对象中嵌入 UIWebView 或 UITableView 对象。如果这样做,可能会导致意外行为,因为这两个对象的触摸事件可能会混淆和错误处理。

    如果您使用的是 iPhone,请使用 Web 视图推送一个新的视图控制器。在 iPad 下,在 UIPopoverController 中显示一个小的视图控制器。

    【讨论】:

    • 我认为问题没有将 web 视图作为表格的子视图。
    • 谢谢 J2theC - 非常精明 - 我当然将 UIWebView 嵌入到滚动视图中。您的建议是正确的方法,但如果我只是隐藏滚动视图而不是 web 视图,它也可以工作 :-)
    最近更新 更多