Pregunta

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?

¿Fue útil?

Solución 2

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

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

Otros consejos

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top