Question

I am using an NSScrollview to scroll programatically. I have hidden the horizental and vertical scrollers but the user is still able to scroll using the mouse wheel.I want to prevent thismanual scrolling.

This is how I am doing the automatic scrolling

- (IBAction)scrollToMidAnimated:(id)sender
{
    [NSAnimationContext beginGrouping];
    [[NSAnimationContext currentContext] setDuration:2.0];
    NSClipView* clipView = [self.scrollView contentView];
    NSPoint newOrigin = [clipView bounds].origin;
    newOrigin.y = [self.scrollView contentView].frame.size.height/2.0;
    [[clipView animator] setBoundsOrigin:newOrigin];
    [NSAnimationContext endGrouping];
}

It works perfectly but I want to prevent the user from manual scrolling(I only want to scroll programatically).Is there any way to do that?

Was it helpful?

Solution 2

Finally got the solution.I subclassed NSScrollView and overrided its method scrollwheel and left it empty.

- (void)scrollWheel:(NSEvent *)theEvent
{
    // Do nothing
}

OTHER TIPS

Try like this create custom scrollview class and then include below piece of code:-

    - (void)scrollWheel:(NSEvent *)theEvent
    {
    [[self nextResponder] scrollWheel:theEvent];
     }

if you did hide the scrollers and prevent user scrolling, are you sure you want NSScrollView at all in the first place? Just use NSClipView and animate just like you are doing. No need to subclass and override scrollWheel:. Its a little more cleaner and concise.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top