прослушивание событий мультитач в OS X с помощью обработчиков событий touchesBegan и touchesMoved

Я пытаюсь записывать прикосновения и движения пальцев, которые пользователи выполняют на трекпаде MacBook 2018.

Когда я пытаюсь протестировать API и печатать на консоли, когда пользователь касается трекпада, я не вижу вывода.

Как мне прослушивать события касания и получать от них данные?

Я сослался на документацию по обработке событий трекпада. В разделе обработки событий мультитач на странице говорится:

По умолчанию представление не принимает события касания. Чтобы обрабатывать события касания, ваше настраиваемое представление должно сначала вызвать метод NSViewsetAcceptsTouchEvents: с аргументом ДА.

Однако в документации setAcceptsTouchEvents говорится, что этот метод устарел.

Когда я пытаюсь просто распечатать журнал при обнаружении касания, чтобы проверить, работает ли API, я не вижу вывода консоли. вот мой код:

import Cocoa

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }

    override func touchesBegan(with event: NSEvent) {
        print("touched!");
    }

}

как мне заставить консольный оператор что-то напечатать?

2 ответа

Решение

Я играл с этим и вот что я понял.

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the //view.
    //view.acceptsTouchEvents = true; //deprecated but works.deprecated
    view.allowedTouchTypes = [NSTouch.TouchTypeMask.direct, NSTouch.TouchTypeMask.indirect];
}

а затем вы можете переопределить функции, когда касания находятся на разных этапах, как описано в вопросе.

Обратите внимание, что для выполнения массажа «allowedTouchTypes» в подклассе это выглядит следующим образом:

      import Cocoa

class UnView: NSView{
    override var allowedTouchTypes: NSTouch.TouchTypeMask {
        get { return [] } .. as you wish
        set { }
    }
    
}
Другие вопросы по тегам