Если вы выделите слово на iOS, Apple представит опцию «Заменить ...» в UIMenuController. Нажав на него, контроллер меню изменяет свой набор параметров на слова замены:
Как мне добиться такого же поведения обновления элементов после выбора опции?
Я пытался вызвать UIMenuController. update()
, но после выбора первой опции меню исчезает. Я должен нажать еще раз, чтобы показать меню.
Я уже знаю, как настроить пункты меню и добавить свои собственные.
Я не могу понять, как заставить меню отображаться после выбора опции. Я пытался сделать следующее:
class MyTextView: UITextView {
/// called once on viewDidLoad
func initializeMenuItems() {
UIMenuController.shared.menuItems = [
UIMenuItem(title: "Thesaurus...", action: #selector(thesaurusTapped)),
]
}
@objc
private func thesaurusTapped(_ sender: UIMenuController) {
UIMenuController.shared.menuItems = [
UIMenuItem(title: "Experiment", action: #selector(replacementTapped)),
UIMenuItem(title: "Trial", action: #selector(replacementTapped)),
UIMenuItem(title: "Inspection", action: #selector(replacementTapped)),
]
UIMenuController.shared.update()
}
@objc
private func replacementTapped(_ sender: UIMenuController) {
// TODO: Display the option the user chose
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return action == #selector(replacementTapped) || action == #selector(thesaurusTapped)
}
}