Я реализовал собственное текстовое представление, используя TextKit
. Также у меня есть пользовательский выбор текста, реализованный с помощью UILongPressGesture
. Я добился прогресса в копировании выделенного текста с помощью стандартного всплывающего меню UIMenuController
.
Я хочу реализовать пользовательское определение текста. Либо переопределяя стандартное действие определения (не знаю, существует ли оно вообще), либо с помощью пользовательского UIMenuItem
.
Пока у меня есть следующее:
@objc func longTap(sender: UILongPressGestureRecognizer) {
...
becomeFirstResponder()
let copyItem = UIMenuItem(title: "Copy", action: #selector(copySelector))
let defineItem = UIMenuItem(title: "Define", action: #selector(defineSelector))
UIMenuController.shared.menuItems = [copyItem, defineItem]
UIMenuController.shared.setTargetRect(...)
UIMenuController.shared.setMenuVisible(true, animated: true)
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(CenterViewController.copySelector) {
return true
} else if action == #selector(CenterViewController.defineSelector) {
return true
}
return false
}
....
@objc func defineSelector() {
// Use device's dictionary?
// ??
customTextView.clearSelection()
}
И вот вопрос: Как реализовать defineSelector
?
Я искал везде, но нет ответов. Есть ли способ использовать словари и представить модальное представление с определениями? Как это делает система с любым выделенным текстом.