WKWebView не отображает настраиваемую конфигурацию UIContextMenuConfiguration для изображений
Я пытаюсь создать собственное контекстное меню для своего WKWebView на iOS 13. Я могу переопределить контекстное меню по умолчанию для обычных ссылок, однако, когда я нажимаю и удерживаю изображение, отображается контекстное меню по умолчанию.
Вот код, который у меня есть:
-(void) webView:(WKWebView *)webView
contextMenuConfigurationForElement:(WKContextMenuElementInfo *)elementInfo
completionHandler:(void (^)(UIContextMenuConfiguration *configuration))completionHandler {
NSURL *url = elementInfo.linkURL;
__block BOOL isURLImage;
__block UIImage *image;
if (url != nil) {
UIAction *openURL = [UIAction actionWithTitle:@"Open URL" image:nil identifier:nil handler:^(UIAction *action) {
[self.webView loadRequest:[NSURLRequest requestWithURL:url]];
}];
UIAction *openNewTab = [UIAction actionWithTitle:@"Open in new tab" image:nil identifier:nil handler:^(UIAction *action) {
[self createNewTab:url];
}];
dispatch_async(dispatch_queue_create("getImage", NULL), ^(void) {
NSData *data = [NSData dataWithContentsOfURL:url];
image = [UIImage imageWithData:data];
if (image == nil) {
dispatch_async(dispatch_get_main_queue(), ^{
UIContextMenuConfiguration *menuconfig = nil;
menuconfig = [UIContextMenuConfiguration configurationWithIdentifier:nil previewProvider:nil actionProvider:^(NSArray *suggestedAction) {
suggestedAction = nil;
return [UIMenu menuWithTitle:@"" children:@[openURL, openNewTab]];
}];
completionHandler(menuconfig);
});
}
else {
dispatch_async(dispatch_get_main_queue(), ^{
UIAction *saveImage = [UIAction actionWithTitle:@"Save image" image:nil identifier:nil handler:^(UIAction *action) {
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *assetRequest;
assetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
} completionHandler:^(BOOL success, NSError *error) {
}];
}];
UIContextMenuConfiguration *menuconfig = nil;
menuconfig = [UIContextMenuConfiguration configurationWithIdentifier:nil previewProvider:nil actionProvider:^(NSArray *suggestedAction) {
suggestedAction = nil;
return [UIMenu menuWithTitle:@"" children:@[openURL, openNewTab, saveImage]];
}];
completionHandler(menuconfig);
});
}
});
}
else {
completionHandler(nil);
}
}
Любая помощь будет принята с благодарностью.