Мне нужно добавить «Подсветка» в качестве нового пользовательского пункта меню при длительном нажатии в текстовом окне. Я смог удалить «Lookup», который мне не нужен, но не смог понять, как добавить дополнительные пункты меню.
- В моем коде SwiftUI CustomUITextView расширяет UITextView,
class CustomUITextView: UITextView {
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(UIResponderStandardEditActions.cut(_:)) ||
action == Selector(("_define:")) ||
action == #selector(UIResponderStandardEditActions.paste(_:)) ||
action == Selector(("_promptForReplace:")){
return false;
}
else {
return super.canPerformAction(action, withSender: sender)
}
}
}
и TextView соответствует протоколу UIViewRepresentable -
struct TextView : UIViewRepresentable {
var contents: NSAttributedString
func makeUIView(context: Context) -> CustomUITextView {
let customTextView = CustomUITextView()
customTextView.isEditable = false
customTextView.isUserInteractionEnabled = true
return customTextView
}
func updateUIView(_ uiView: CustomUITextView, context: Context) {
uiView.attributedText = contents
}
}
В Swift я знаю, что код для добавления пользовательских элементов меню будет следующим:
func addSpecialMenu() {
let menuController = UIMenuController.shared
var menuItem = [UIMenuItem]();
let highlightMenuItem = UIMenuItem(title: "Highlight", action: #selector(onHighlightClicked));
menuItem.append(highlightMenuItem);
menuController.menuItems = menuItem;
}
Я попытался вызвать addSpecialMenu () для longPressGesture. Но не смог заставить его работать. Как я могу добавить пользовательскую ссылку меню в SwiftUI .?