У меня возникает странная ошибка, когда я перезаписываю функцию scrollWheel (theEvent: NSEvent) в NSScrollView.Прокрутка в NSScrollView останавливается при перезаписи функции прокруткиWheel
Вот мой код:
import Cocoa
class GraphScrollView: NSScrollView {
var axisScrollViewInstance: AxisScrollView?
override func scrollWheel(theEvent: NSEvent) {
if theEvent.deltaY != 0 {
axisScrollViewInstance?.scrollEventFromOtherScrollView(theEvent)
super.scrollWheel(theEvent)
} else if theEvent.deltaX != 0 {
super.scrollWheel(theEvent)
}
}
}
class AxisScrollView: NSScrollView {
var graphScrollViewInstance: GraphScrollView?
override func scrollWheel(theEvent: NSEvent) {
if theEvent.deltaY != 0 {
super.scrollWheel(theEvent)
graphScrollViewInstance?.scrollWheel(theEvent)
}
}
func scrollEventFromOtherScrollView(theEvent: NSEvent) {
if theEvent.deltaY != 0 {
super.scrollWheel(theEvent)
}
}
}
Код в основном проверяет, в каком направлении пользователь прокручивает и передает NSEvent другому NSScrollView если направление вертикально. Мне нужно это, чтобы у меня было два NSScrollViews рядом друг с другом, которые прокручиваются по вертикали, а один из них также прокручивается по горизонтали. В качестве примера вы можете посмотреть приложение Mac Calendar, в котором есть часовой столбец слева, который только прокручивает по вертикали и обзор в неделю справа, который прокручивает по горизонтали и по вертикали.
Однако, если я перезаписываю метод scrollWheel и вызываю суперфункцию изнутри, это приводит к странной проблеме с Mighty Mouse. Я могу только прокручивать вверх и вправо, в то время как он ничего не делает, если я прокручиваю в любом другом направлении, хотя NSEvent всегда происходит, не обращая внимания на то, в каком направлении я прокручиваю. Через некоторое время она перестает прокручиваться.
Я уже пытался просто переписать ScrollWheel-метод и вызывать только супер функцию с событием, как это:
override func scrollWheel(theEvent: NSEvent) {
super.scrollWheel(theEvent)
}
, но это приводит к тем же проблемам. У меня есть вторая (не Apple) мышь, подключенная к моей системе, которая имеет «нормальное» колесо прокрутки и с которым мой код работает отлично.
У вас есть идея, в чем проблема? Я слышал, что NSEvents имеют другой подтип (1: Apple Device, 0: Any other Device). Может быть, это как-то связано с этим? В противном случае, знаете ли вы, как я могу иметь два NSScrollViews рядом друг с другом, которые прокручивают вертикально одновременно?