单击另一个 Web 视图上的图像时在 Web 视图中打开图像?

Posted

技术标签:

【中文标题】单击另一个 Web 视图上的图像时在 Web 视图中打开图像?【英文标题】:Opening an image in a web view on clicking an image on another web view? 【发布时间】:2011-05-05 09:27:51 【问题描述】:

我正在开发一个 iPhone 应用程序,其中有要在网络视图中显示的大表格。我打算在实际表格的位置提供一个小图像,当用户单击它时,实际图像将在另一个 webView 中打开。我正在寻找正确的方向。请帮忙。

【问题讨论】:

【参考方案1】:

为您的第一个包含小图像的 webview 实现 UIWebViewDelegate 协议方法 shouldStartLoadWithRequest

当用户点击你的图片时,你需要拦截这个事件并决定做什么和怎么做。

shouldStartLoadWithRequest 方法在您的 webview 中触发某种交互时调用,例如单击链接。有关详细信息,请参阅UIWebView documentation。 shouldStartLoadWithRequest 必须返回一个 BOOL 来指示 webview 应该继续执行用户执行的操作(返回 YES)或不执行(返回 NO)。

既然您知道某个链接已被点击,您必须确保它是一张图片。这是通过评估请求参数传回的 url 来完成的。我在示例中编写了一个方法 clickedOnImageWithUrl,如果单击了图像,它将返回 YES。但是,我不知道您嵌入在链接中的小图像是什么样的,我无法提供有关该方法的更多详细信息。如果它返回 YES,您可以显示您的新 webView。

那么代码可能看起来像这样来拦截点击的链接:

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

    if (navigationType == UIWebViewNavigationTypeLinkClicked) 
        // check if user clicked on your image...clickedOnImageWithUrl is made up
        if([self clickedOnImageWithUrl:[aRequest url]]) 

             // push new webview with image ...

             return NO;
                    
    

    return YES;

【讨论】:

你能澄清更多...请?意味着我如何用这个 url 推送新的 webview? @Nick 是的,我知道委托方法。但我的情况有些不同。我有一个仅包含 webView 的视图。我正在创建此视图的对象并将它们添加到滚动视图中在不同的视图控制器上。我正在用不同的内容加载我的 webView 的每个对象。它们现在是可滚动的。我的图标图像在这些网页中,当用户单击该图像时,我想在不同的视图中显示该图像。我该怎么做?感谢您到现在为止的帮助...... 我不确定您是否真的了解委托方法为您做了什么。当你有一个带有可点击图像的 web 视图时,你需要拦截点击,然后决定显示什么。这必须在objective-c中完成,当您知道需要显示另一个webview时,您可以将新的viewcontroller呈现为模态。 @Nick:是的,我尝试了同样的方法,但是模态视图控制器被加载为滚动的子视图,因为我的 web 视图被添加为滚动视图视图中的子视图,我不希望这样 您可以使用任何视图将视图呈现为模态视图,例如根视图控制器可以为您执行此操作。无论如何,我不确定你的设置是什么。我认为你应该在你的问题中更详细地描述它,截图会更有帮助。【参考方案2】:

@Yogi:当您要在另一个 webView 中显示图像时,为什么要在 UIWebView 顶部有一个表格视图。我想只有一个 WebView 就足够了。顺便说一句,您可以通过拥有图像详细信息的字典或什至包含图像 url 的数组来实现您想要的功能。并在 UITableViewDelegate 方法中

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

您可以使用 indexpath 将图像的 url 传递给 webview,该 webview 可以打开 url 来查看图像。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
// Get the url for the image here
NSUrlRequest *urlRequest = [NSUrlRequest requestWithURL:urImageUrl];
[urWebView loadRequest:urlRequest];

【讨论】:

哦,我没有任何表格视图。我要显示的图像是表格。所以根本没有表格视图.....

以上是关于单击另一个 Web 视图上的图像时在 Web 视图中打开图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 url 的 editText 和按钮单击在另一个活动中打开 web 视图

单击列表视图时在活动中显示不同的信息

我在UIWebView中加载Web视图,我需要单击网站上的登录按钮

WPF MVVM 在按钮单击时在视图之间导航

如何在单击按钮时在一个视图控制器中正确启用和禁用约束

滚动时在另一个片段视频视图中重叠一个片段的视频拇指