swift - 如何通过终端或 Swift 禁用三指点击手势?

标签 swift macos cocoa gesture

我正在尝试禁用三指点击以在我的 macOS 应用程序中显示单词定义。我正在使用 Xcode 和 Swift 加载 Web View 和 TextView (以及按钮)。我希望用户仍然能够在 View 中突出显示文本,但不能使用三指点击。我在想我可以通过运行终端命令或在 Xcode 中运行 Swift 命令更容易来更改 Apple 默认设置(启用三指点击)。我正在寻找我可以使用的终端命令或 Swift 代码来禁用它(通过我的 Xcode 项目中的一行代码)。

提前致谢!

最佳答案

你应该先问问自己为什么要这样做。当且仅当有充分的理由表明您绝对不希望用户能够在您的应用(或特定 TextView )中查找单词的定义时,请继续阅读。

使用终端命令更改设置不是一个好主意,因为此手势是系统设置,而不是特定于您的应用程序的设置。混淆适用于您的应用以外的任何应用的用户设置是 Not Acceptable 。

执行此操作的正确方法是在 NSTextView 的上下文中。假设您已经从与 TextView 关联的 NSMenu 中删除了查找条目(这可以通过覆盖 textView(:menu:for:at:) 来完成),您可以简单地覆盖 quickLook(with:)NSTextView 的子类中并且不调用 super 以防止三指点击工作。

例如,您可以像这样创建一个自定义的 NSTextView:

class MyTextView: NSTextView {

    override func quickLook(with event: NSEvent) {
        print("preventing quick look")
    }

}

请注意,如果您正在处理 NSTextField,则可以换掉字段编辑器(它是一个 NSTextView)。这是解释here .

关于swift - 如何通过终端或 Swift 禁用三指点击手势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144963/

相关文章:

macos - 使用启用了应用程序沙箱的 NSTask 运行/bin/ps

cocoa - 使 OSX 应用程序在未获得焦点时响应第一次鼠标单击

swift - UIStackView 中隐藏和取消隐藏按钮时的奇怪动画

swift - UIScrollView可见区域截图

c++ - 检查不同 STL 链接的 C++ 库以跟踪 gcc/osx 上的 std::vector 析构函数崩溃?

macos - 在以我的应用程序为中心的同一显示屏上显示取景器窗口

cocoa - 创建或打开新文档时如何关闭 NSPanel?

swift - 我是否需要明确说明我想在 xcode 9、swift 4 中使用 cocoapods 安装哪个版本的 alamofire

ios - 是否可以将数据扔到另一个 View Controller ?

macos - mac OSX Sierra,无法添加 vagrant box laravel/homestead,因为需要 cURL v 9.0.0 或更高版本,并且 libcurl.4.dylib 提供 v7.0.0