【问题标题】:Swift `UIMenuController` custom actionSwift `UIMenuController` 自定义操作
【发布时间】:2019-04-18 12:13:30
【问题描述】:

我已经使用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

我到处搜索,但没有答案。 有什么方法可以使用字典并呈现带有定义的模态视图?正如系统使用任何选定的文本完成的那样。

【问题讨论】:

    标签: swift lookup uimenucontroller textkit


    【解决方案1】:

    没关系,我找到了解决方案:

    @objc private func defineSelector() {
        if let text = textToCopy {
            let txt = UITextView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
            txt.isHidden = true
            view.addSubview(txt)
            txt.text = text
            txt.isEditable = false
            txt.becomeFirstResponder()
            txt.selectedRange = NSRange(0..<text.count)
            let selector = Selector(("_define:"))
            if txt.canPerformAction(selector, withSender: nil) {
                txt.perform(selector, with: nil)
            }
            txt.removeFromSuperview()
        }
        customTextView.clearSelection()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 2010-11-11
      • 2023-03-22
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多