In my application, I want the scrolling to happen, only with scroll wheel action from a mouse and not from the two finger gesture on a trackpad. Basically, I am trying to determine if the scrollWheelEvent is generated from the mouse or trackpad, inside – (void)scrollWheel:(NSEvent *)theEvent method. From what I know so far, it seems like there is no straightforward way to accomplish this.
I tried a work around of setting a boolean variable to true and false inside -(void)beginGestureWithEvent:(NSEvent *)event; and -(void)endGestureWithEvent:(NSEvent *)event; But this is not a solution because the scrollWheel: method is getting called several times, after the endGestureWithEvent: method is called.
Here is my code:
$BOOL fromTrackPad = NO;
-(void)beginGestureWithEvent:(NSEvent *)event;
{
fromTrackPad = YES;
}
-(void) endGestureWithEvent:(NSEvent *)event;
{
fromTrackPad = NO;
}
- (void)scrollWheel:(NSEvent *)theEvent
{
if(!fromTrackPad)
{
//then do scrolling
}
else
{
//then don't scroll
}
}
I know this is something that is not standard, but this is my requirement. Does anyone know a way to do this?? Thanks!
-[NSEvent momentumPhase]is the solution. So, the events generated from the trackpad between the beginGesture and endGesture events returns a value other thanNSEventPhaseNonefor-[NSEvent phase]and the trackpad events that are generated after the endGesture event returns a value other thanNSEventPhaseNonefor-[NSEvent momentumPhase]. The code is below,