如何在 iOS 10 上覆盖 WKWebView 的 "Save Image" 菜单
How to override the "Save Image" menu of WKWebView on iOS 10
我想使用 WKWebView 开发 iOS 本机应用程序。
当我加载页面时,例如:http://www.google.com
当我长按“Google”标志时,它会弹出一个带有“保存图像”的 UIAlertViewController
“复制”
“取消”
项目。
但是当我点击“保存图像”时,照片将保存到系统“照片库”中
我需要的是将图像“保存”到我的应用程序文档文件夹。
有实现的方法吗?
WKWebview长按出现的菜单是UIMenuController。您可以自定义它以向其中添加新项目 - 带有自定义操作的新按钮。但是您不能修改现有的菜单操作。
如果您想将图像复制到其他带有菜单的地方,请添加新菜单以将图像保存到文件夹。
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Copy Image"
action:@selector(customAction:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];
只需删除所有 "long press" 手势识别器或调试它并了解您需要删除哪些识别器:
for (UIView *subView in self.webView.scrollView.subviews) {
for (UIGestureRecognizer *recogniser in subView.gestureRecognizers) {
if ([recogniser isKindOfClass:UILongPressGestureRecognizer.class]) {
[subView removeGestureRecognizer:recogniser];
}
}
}
可以注入js逻辑来防止默认动作,并将事件传递给native。
可以看到详细说明here。
并且可以找到示例代码here。
我想使用 WKWebView 开发 iOS 本机应用程序。 当我加载页面时,例如:http://www.google.com 当我长按“Google”标志时,它会弹出一个带有“保存图像”的 UIAlertViewController “复制” “取消” 项目。
但是当我点击“保存图像”时,照片将保存到系统“照片库”中 我需要的是将图像“保存”到我的应用程序文档文件夹。
有实现的方法吗?
WKWebview长按出现的菜单是UIMenuController。您可以自定义它以向其中添加新项目 - 带有自定义操作的新按钮。但是您不能修改现有的菜单操作。
如果您想将图像复制到其他带有菜单的地方,请添加新菜单以将图像保存到文件夹。
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Copy Image"
action:@selector(customAction:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];
只需删除所有 "long press" 手势识别器或调试它并了解您需要删除哪些识别器:
for (UIView *subView in self.webView.scrollView.subviews) {
for (UIGestureRecognizer *recogniser in subView.gestureRecognizers) {
if ([recogniser isKindOfClass:UILongPressGestureRecognizer.class]) {
[subView removeGestureRecognizer:recogniser];
}
}
}
可以注入js逻辑来防止默认动作,并将事件传递给native。
可以看到详细说明here。
并且可以找到示例代码here。