прослушивание событий мультитач в OS X с помощью обработчиков событий touchesBegan и touchesMoved
Я пытаюсь записывать прикосновения и движения пальцев, которые пользователи выполняют на трекпаде MacBook 2018.
Когда я пытаюсь протестировать API и печатать на консоли, когда пользователь касается трекпада, я не вижу вывода.
Как мне прослушивать события касания и получать от них данные?
Я сослался на документацию по обработке событий трекпада. В разделе обработки событий мультитач на странице говорится:
По умолчанию представление не принимает события касания. Чтобы обрабатывать события касания, ваше настраиваемое представление должно сначала вызвать метод NSView
setAcceptsTouchEvents:
с аргументом ДА.
Однако в документации 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 { }
}
}