El desplazamiento en NSScrollView se detiene al sobrescribir la función scrollWheel

Experimento un error extraño cuando sobrescribo la función scrollWheel (theEvent: NSEvent) en un NSScrollView.

Aquí está mi código:

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)
        }
    }   
}

El código básicamente verifica en qué dirección se desplaza el usuario y reenvía el NSEvent a otro NSScrollView si la dirección es vertical. Necesito esto para poder tener dos NSScrollViews uno al lado del otro, que se desplazan verticalmente y uno de ellos también se desplaza horizontalmente. Como ejemplo, puede ver la aplicación Calendario de Mac, que tiene una columna de hora a la izquierda que solo se desplaza verticalmente y una vista general de la semana a la derecha que se desplaza horizontal y verticalmente.

Sin embargo, si sobrescribo el método scrollWheel y llamo a la súper función desde adentro, esto conduce a un extraño problema con el Mighty Mouse. Solo puedo desplazarme hacia arriba y hacia la derecha, mientras que no hace nada si me desplazo en cualquier otra dirección, aunque siempre ocurre un evento NSE, sin tener en cuenta en qué dirección me desplazo. Después de un tiempo deja de desplazarse por completo.

Ya he intentado simplemente sobrescribir el método scrollWheel y solo llamar a la superfunción con un evento como este:

override func scrollWheel(theEvent: NSEvent) {
    super.scrollWheel(theEvent)
}

pero lleva a los mismos problemas. Tengo un segundo mouse (que no es Apple) conectado a mi sistema, que tiene una rueda de desplazamiento 'normal' y con el cual mi código funciona perfectamente bien.

¿Tienes idea de cuál podría ser el problema? Escuché que los NSEvents son de diferentes subtipos (1: dispositivo Apple, 0: cualquier otro dispositivo). Tal vez eso tiene algo que ver con eso? De lo contrario, ¿sabe cómo puedo tener dos NSScrollViews una al lado de la otra que se desplazan verticalmente simultáneamente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta