erkanyildiz erkanyildiz - 1 year ago 181
Objective-C Question

Disable scrolling in NSTableView

Is there a simple way to disable scrolling of an NSTableView.

It seems there isn't any property on

[myTableView enclosingScrollView]
[[myTableView enclosingScrollView] contentView]
to disable it.

Answer Source

This works for me: subclass NSScrollView, setup and override via:

- (id)initWithFrame:(NSRect)frameRect; // in case you generate the scroll view manually
- (void)awakeFromNib; // in case you generate the scroll view via IB
- (void)hideScrollers; // programmatically hide the scrollers, so it works all the time
- (void)scrollWheel:(NSEvent *)theEvent; // disable scrolling

@interface MyScrollView : NSScrollView

#import "MyScrollView.h"

@implementation MyScrollView

- (id)initWithFrame:(NSRect)frameRect
    self = [super initWithFrame:frameRect];
    if (self) {
        [self hideScrollers];

    return self;

- (void)awakeFromNib
    [self hideScrollers];

- (void)hideScrollers
    // Hide the scrollers. You may want to do this if you're syncing the scrolling
    // this NSScrollView with another one.
    [self setHasHorizontalScroller:NO];
    [self setHasVerticalScroller:NO];

- (void)scrollWheel:(NSEvent *)theEvent
    // Do nothing: disable scrolling altogether


I hope this helps.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download