【问题标题】:How to override the "Save Image" menu of WKWebView on iOS 10如何在 iOS 10 上覆盖 WKWebView 的“保存图像”菜单
【发布时间】:2016-12-27 06:04:04
【问题描述】:

我想使用 WKWebView 开发一个 iOS 原生应用。 当我加载页面时,例如:http://www.google.com 当我长按“谷歌”标志时,它会弹出一个带有“保存图像”的 UIAlertViewController “复制” “取消” 项目。

但是当我点击“保存图像”时,照片将被保存到系统“照片库”中 我需要的是“保存图像”到我的应用文档文件夹。

有没有办法实现它?

【问题讨论】:

    标签: ios objective-c wkwebview


    【解决方案1】:

    只需删除所有“长按”手势识别器或对其进行调试并了解您需要删除哪些识别器:

    for (UIView *subView in self.webView.scrollView.subviews) {
        for (UIGestureRecognizer *recogniser in subView.gestureRecognizers) {
            if ([recogniser isKindOfClass:UILongPressGestureRecognizer.class]) {
                [subView removeGestureRecognizer:recogniser];
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      你可以注入js逻辑来阻止默认动作,并将事件传递给原生端。

      您可以查看详细说明here

      示例代码可以在here找到。

      【讨论】:

        【解决方案3】:

        长按 WKWebview 时出现的菜单是 UIMenuController 。您可以对其进行自定义以向其中添加新项目 - 带有您自定义操作的新按钮。但是您不能修改现有的菜单操作。

        如果您想通过菜单将图像复制到其他地方,请添加新菜单以将图像保存到文件夹。

        UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Copy Image"
                                                              action:@selector(customAction:)];
        [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];
        

        【讨论】:

        • 感谢您的及时回复。我再次编辑了这个问题。更详细地说,我的意思是 UIActionSheet 喜欢的控件,它在第一个屏幕截图中。我猜你提到了 WKWebview 中的第二个菜单,对吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        • 2012-05-25
        • 2019-11-10
        • 2015-07-16
        • 2015-09-24
        相关资源
        最近更新 更多