У меня есть NSTableView, созданный из IB, который я хочу только автоматически скрывать горизонтальный скроллер.Основная причина, по которой я хочу это сделать, заключается в том, что NSTableView corverView отображается только при наличии вертикальной прокрутки.
Я не могу найти метод для этого с базовым классом.Поэтому я попытался создать подкласс NSScrollView и увидеть скрытый ключ на горизонтальной прокрутке (код ниже).Это работает;однако представление пытается сбросить текущие видимые параметры каждый раз, когда пользователь изменяет размер окна.Это делает мою реализацию несколько дорогой;и это кажется не элегантным.Любые лучшие идеи о том, как это сделать?
Заранее спасибо!
Текущая реализация:
@interface PVScrollView : NSScrollView {
BOOL autohidesHorizontalScroller;
}
@property(assign) BOOL autohidesHorizontalScroller;
- (void) viewResized:(NSNotification*)notification;
@end
@implementation PVScrollView
@synthesize autohidesHorizontalScroller;
- (void) setAutohidesHorizontalScroller:(BOOL)val
{
autohidesHorizontalScroller = val;
[self setAutohidesScrollers:NO];
[[self horizontalScroller] addObserver:self
forKeyPath:@"hidden"
options:0
context:nil];
}
- (void) observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if (!([self documentVisibleRect].size.width < [[self documentView] frame].size.width) )
{
// remove observer
[[self horizontalScroller] removeObserver:self
forKeyPath:@"hidden"];
[[self horizontalScroller] setHidden:YES];
//[[self horizontalScroller] setNeedsDisplay:YES];
// add it back
[[self horizontalScroller] addObserver:self
forKeyPath:@"hidden"
options:0
context:nil];
}
}
@end