在为WKWebview上选定的文本显示自定义菜单时,我使用了WKWebview。但是现在不推荐在iOS 16上使用它,并得到以下错误
[Text] Using UIMenuController to add items into text menus is deprecated. Please implement the UITextInput API editMenuForTextRange:suggestedActions: instead.
[EditMenuInteraction] The edit menu ... did not have performable commands and/or actions; ignoring present.
现在我找不到任何关于如何自定义wkwebview菜单的文档。
这就是我想在菜单上展示的东西。
如何自定义wkwebview上选定文本上的菜单?
我尝试过添加UITextInput,但它需要遵守一堆协议。
发布于 2022-11-16 10:26:07
这还不可能,但我认为苹果正计划很快为UIEditMenuInteraction
添加API。这就是我在WebKit源中发现的(请记住WK_IOS_TBA
可用性说明符):
/**
* @abstract Called when the web view is about to present its edit menu.
*
* @param webView The web view displaying the menu.
* @param animator Appearance animator. Add animations to this object to run them alongside the appearance transition.
*/
- (void)webView:(WKWebView *)webView willPresentEditMenuWithAnimator:(id<UIEditMenuInteractionAnimating>)animator WK_API_AVAILABLE(ios(WK_IOS_TBA));
/**
* @abstract Called when the web view is about to dismiss its edit menu.
*
* @param webView The web view displaying the menu.
* @param animator Dismissal animator. Add animations to this object to run them alongside the dismissal transition.
*/
- (void)webView:(WKWebView *)webView willDismissEditMenuWithAnimator:(id<UIEditMenuInteractionAnimating>)animator WK_API_AVAILABLE(ios(WK_IOS_TBA));
发布于 2022-11-22 07:28:15
在iOS 16的webview中显示自定义菜单时,我也遇到了同样的问题。我实现了以下方法,并删除了所有不需要的菜单项,这是很好的选择:
open override func buildMenu(with builder: UIMenuBuilder) {
if #available(iOS 16.0, *) {
builder.remove(menu: .lookup)
builder.remove(menu: .file)
builder.remove(menu: .edit)
builder.remove(menu: .view)
builder.remove(menu: .window)
builder.remove(menu: .help)
builder.remove(menu: .about)
builder.remove(menu: .preferences)
builder.remove(menu: .services)
builder.remove(menu: .hide)
builder.remove(menu: .quit)
builder.remove(menu: .newScene)
builder.remove(menu: .openRecent)
builder.remove(menu: .close)
builder.remove(menu: .print)
builder.remove(menu: .document)
builder.remove(menu: .undoRedo)
builder.remove(menu: .standardEdit)
builder.remove(menu: .find)
builder.remove(menu: .replace)
builder.remove(menu: .share)
builder.remove(menu: .textStyle)
builder.remove(menu: .spelling)
builder.remove(menu: .spellingPanel)
builder.remove(menu: .spellingOptions)
builder.remove(menu: .substitutions)
builder.remove(menu: .substitutionsPanel)
builder.remove(menu: .substitutionOptions)
builder.remove(menu: .transformations)
builder.remove(menu: .speech)
builder.remove(menu: .learn)
builder.remove(menu: .format)
builder.remove(menu: .font)
builder.remove(menu: .textSize)
builder.remove(menu: .textColor)
builder.remove(menu: .textStylePasteboard)
builder.remove(menu: .text)
builder.remove(menu: .writingDirection)
builder.remove(menu: .alignment)
builder.remove(menu: .toolbar)
builder.remove(menu: .sidebar)
builder.remove(menu: .fullscreen)
builder.remove(menu: .minimizeAndZoom)
builder.remove(menu: .bringAllToFront)
}
super.buildMenu(with: builder)
}
希望这有帮助,干杯
https://stackoverflow.com/questions/74216418
复制相似问题