OC WKWebView 禁止超链接长按
时间: 2023-09-03 07:16:55 浏览: 171
在 Objective-C 中,可以通过设置 `WKUIDelegate` 中的 `webView:contextMenuConfigurationForElement:completionHandler:` 方法来禁止超链接长按事件的默认行为,也就是禁止出现菜单(比如打开链接、复制链接等)。具体来说,可以在该方法中返回一个空的 `UIMenuConfiguration` 对象,例如:
```objective-c
@interface MyViewController () <WKUIDelegate>
@property (nonatomic, strong) WKWebView *webView;
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
// ...
self.webView.UIDelegate = self;
}
- (void)webView:(WKWebView *)webView contextMenuConfigurationForElement:(WKContextMenuElementInfo *)elementInfo completionHandler:(void (^)(UIContextMenuConfiguration * _Nullable))completionHandler {
completionHandler([[UIContextMenuConfiguration alloc] init]);
}
@end
```
上面的代码会禁止所有的超链接长按菜单。如果只想禁止某些超链接的长按菜单,可以在该方法中判断 `elementInfo.linkURL` 是否为需要禁止的超链接,例如:
```objective-c
- (void)webView:(WKWebView *)webView contextMenuConfigurationForElement:(WKContextMenuElementInfo *)elementInfo completionHandler:(void (^)(UIContextMenuConfiguration * _Nullable))completionHandler {
if ([elementInfo.linkURL.absoluteString isEqualToString:@"https://www.example.com"]) {
completionHandler([[UIContextMenuConfiguration alloc] init]);
} else {
completionHandler(nil);
}
}
```
这样就只会禁止链接为 `https://www.example.com` 的超链接长按菜单。注意,该方法只适用于使用 `WKWebView` 的 iOS 应用程序。
阅读全文