В Mac OS X трекпад поддерживает несколько жестов, одним из которых является смахивание двумя пальцами для прокрутки страницы вверх, вниз, влево или вправо. В wxPython есть панель для создания прокручиваемых виджетов wx.lib.scrolledpanel. Однако у него нет поддержки жестов, что является настоящей болью.
Я попытался изменить NSView, как это делается, если бы это было обычное приложение Objective C, однако NSEvents используют методы (touchesBeganWithEvent: и т. д.), которые являются подклассами для использования в качестве уведомления и обработки события. Это отличается от вызовов Bind в wxPython. Однако это было бы хорошо, если бы Objective C разрешал исправление обезьян... например
def handleTouchBegin(event):
print "Hey a touch event has begun!"
view.touchBeganWithEvent_ = handleTouchBegin
но, как вы можете догадаться, ошибки PyObj C (поскольку Objective C не поддерживает исправление обезьян или не в какой-либо чистой и приятной форме), и я получаю следующую ошибку
TypeError: cannot change a method
Хорошо, я мог бы сделать то, что говорит яблоко, и подклассифицировать его, но объект уже создан, так как я все еще могу фиксировать события. Конечно есть и
NSEvent addGlobalMonitorForEventsMatchingMask:
and
NSEvent addLocalMonitorForEventsMatchingMask:
но они также разочаровывают тем, что либо даже не имеют дело с приложением (глобальные имеют дело со всеми остальными), либо не имеют дело с отдельными событиями NSView (или делают это, и я дезинформирован).
Итак, как мне это сделать? Я пропустил еще один вариант, я знаю, что читал что-то о NSResponder, но из того, что я понял, это то, что такое NSView, ответчик событий, и вы не добавляете его в NSView.
Существуют ли наблюдатели, как в QTKit, например, для наблюдения за изменением состояния загрузки ( apple_ref/doc/uid/TP40008156-CH109-SW11" rel="nofollow">https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/QTKitApplicationProgrammingGuide/AnatomyoftheQTKFramework/AnatomyoftheQTKFramework.html#//apple_ref/ doc/uid/TP40008156-CH109-SW11 )?