Как отключить жест касания тремя пальцами через терминал или Swift? - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь отключить использование трех нажатий для отображения определения слова в моем приложении MacOS. Я использую Xcode и Swift для загрузки веб-представления и текстового представления (вместе с кнопками). Я хочу, чтобы пользователь по-прежнему мог выделять текст в представлении, но не использовал касание тремя пальцами. Я думал, что смогу изменить настройки Apple по умолчанию (при включении касания тремя пальцами), запустив команду Terminal или если будет проще выполнить команду Swift в Xcode. Я ищу команду терминала, которую я мог бы использовать, или код Swift для его отключения (через строку кода в моем проекте XCode).

Заранее спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

Сначала вы должны спросить себя, почему вы хотите это сделать. Если и только если есть веская причина, по которой вы определенно не хотите, чтобы пользователи могли просматривать определения слов в вашем приложении (или конкретном текстовом представлении), читайте дальше.

Изменение настроек с помощью команд терминала - плохая идея, поскольку этот жест является системной настройкой, а не специфической для вашего приложения. Было бы неприемлемо возиться с пользовательскими настройками, которые применяются к чему-либо, кроме вашего приложения.

Правильный способ сделать это будет в контексте NSTextView. Предполагая, что вы уже удалили запись поиска из NSMenu, связанного с текстовым представлением (что может быть достигнуто путем переопределения textView(:menu:for:at:)), вы можете просто переопределить quickLook(with:) внутри подкласса NSTextView и не вызывайте super для предотвращения работы касания 3 пальцами.

Например, вы можете создать пользовательский NSTextView следующим образом:

class MyTextView: NSTextView {

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

}

Обратите внимание, что если вы имеете дело с NSTextField s, вы можете заменить редактор полей (это NSTextView). Это объясняется здесь .

...