如何在 iOS 10 上覆盖 WKWebView 的“保存图像”菜单
Posted
技术标签:
【中文标题】如何在 iOS 10 上覆盖 WKWebView 的“保存图像”菜单【英文标题】:How to override the "Save Image" menu of WKWebView on iOS 10 【发布时间】:2016-12-27 06:04:04 【问题描述】:我想使用 WKWebView 开发一个 ios 原生应用。 当我加载页面时,例如:http://www.google.com 当我长按“谷歌”标志时,它会弹出一个带有“保存图像”的 UIAlertViewController “复制” “取消” 项目。
但是当我点击“保存图像”时,照片将被保存到系统“照片库”中 我需要的是“保存图像”到我的应用文档文件夹。
有没有办法实现它?
【问题讨论】:
【参考方案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 中的第二个菜单,对吗?以上是关于如何在 iOS 10 上覆盖 WKWebView 的“保存图像”菜单的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中,当用户滚动浏览 WKWebView 时,如何检测屏幕上可见的 html 元素?