gpt4 book ai didi

ios - 无法在 UITextView 的 UIMenuController 中禁用默认 UIMenuItems

转载 作者:行者123 更新时间:2023-11-28 05:57:33 27 4
gpt4 key购买 nike

我正在尝试配置 U​​IMenuController 的菜单项以获得类似于 Medium 的 iOS 功能的功能:

enter image description here

有各种线程专门用于此特定任务,但尽管有数以万计的观点和不同的结果,包括它不适用于足够多的人......似乎没有解决方案对于 UITextView 始终有效。

我已经能够添加自定义菜单选项“printToConsole”,但我无法禁用 Apple 的标准菜单项,例如剪切、复制、粘贴、B I你等:

enter image description here

共识似乎是我应该覆盖 canPerformAction 以禁用这些默认菜单项,但这似乎不起作用:

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
print("canPerformAction being called")

if action == #selector(cut(_:)) {
return false
}
if action == #selector(copy(_:)) {
return false
}
if action == #selector(select(_:)) {
return false
}
if action == #selector(paste(_:)) {
return false
}
if action == #selector(replacementObject(for:)) {
return false
}
if action == #selector(selectAll(_:)) {
return false
}
if action == #selector(printToConsole) {
return true
}

return super.canPerformAction(action, withSender: sender)
}

这是我的相关代码的其余部分:

func addCustomMenu() {
let consolePrintAction = UIMenuItem(title: "Print To Console", action: #selector(printToConsole))
UIMenuController.shared.menuItems = [consolePrintAction]
UIMenuController.shared.update()

}

@objc func printToConsole() {
if let range = articleTextView.selectedTextRange, let selectedText = articleTextView.text(in: range) {
print(selectedText)
}
}

在我的 viewDidLoad 中:

articleTextView.delegate = self
addCustomMenu()

我已将我的 viewController 设置为也符合 UITextViewDelegate。有些人建议,如果您只是将 TextView 子类化,这将以某种方式起作用。我无法让它发挥作用,所以如果这真的是答案,有人可以提供一个例子吗?

同样,我知道这可能看起来像是重复的,但上述解决方案似乎已停止使用 iOS 更新。

谢谢。

最佳答案

要感谢@gaurav 对这个问题的回答,这一定是我在寻找 SO 时逃脱的:https://stackoverflow.com/a/46470592/7134142

关键的代码是这样的,它扩展了 UITextView,而不是继承它:

extension UITextView {
open override func canPerformAction(_ action: Selector, withSender
sender: Any?) -> Bool {
return false
}

在我的 View Controller 中覆盖 canPerformAction 是不必要的,上面的代码仍然允许您添加自定义菜单项。这就是我最终得到的:

enter image description here

关于ios - 无法在 UITextView 的 UIMenuController 中禁用默认 UIMenuItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51014624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com