如何确定触发上下文菜单呈现的内容

问题描述 投票:0回答:1

我正在开发一款适用于 iPad 和 Mac Catalyst 的应用程序。我已经使用自定义撤消管理器实现了撤消。这样项目中的每一层都可以有一个单独的撤消管理器。我注意到有时当我长按

COMMAND
键时,我会看到此上下文菜单。

我在所有作为响应者的对象中添加了验证函数,以确定触发它的原因,但我找不到它。在这种情况下,没有什么可以撤消的,所以我真的需要禁用该命令。我怎样才能确定是什么触发了它?

我已将验证功能添加到所有

viewControllers
、自定义视图、控件子类、
appDelegate
sceneDelegate
。这些都没有触发它。我应该能够通过使用正确对象中的验证函数来禁用该命令,但如何确定它是哪个对象?我可以在
UIResponder
中捕获一些东西吗?也许可以用一个符号断点?还有其他想法吗?我真的不希望出现这个上下文菜单。

一个选择是删除

Edit
菜单,但我不想这样做。我实际上想要它,带有撤消和重做选项,但这些选项需要可验证。

ios ipad mac-catalyst uiresponder
1个回答
0
投票

我不喜欢这个答案,因为我认为这是一个拼凑。此外,它特定于此键命令。在

Appdelegate
我添加了

override var keyCommands: [UIKeyCommand]? {
    [
        UIKeyCommand(title: NSLocalizedString("Undo", comment: ""),
                                          image: nil,
                                          action: #selector(ViewController.undo),
                                          input: "z",
                                          modifierFlags: .command)
    ]
}

在 ViewController 中,我添加了一个空的 @objc func undo() (我可能会在以后用一些东西来实现它。不过,对于这种情况,没有什么可以撤消的。

© www.soinside.com 2019 - 2024. All rights reserved.