Полосы прокрутки NSScrollView не отвечают или отключены - PullRequest
1 голос
/ 27 июня 2011

Я вручную создаю и добавляю NSScrollView и вложенное представление внутри него.

  1. Если подпредставление больше, чем NSScrollView, то появляются полосы прокрутки, но я перемещаю прокрутки, ничего не происходит.

  2. Если подпредставление имеет тот же размер, что и NSSCrollView, и я уменьшаю размер окна, полосы прокрутки не отображаются.

Что я делаю неправильно?

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Вы использовали setDocumentView или addSubview? Если вы использовали addSubview, это не сработает, вам нужно использовать setDocumentView, чтобы установить представление «прокручиваемое» на NSScrollView.

Экземпляр NSScrollView автоматически выложит ваш вид. Если вы хотите переопределить это поведение, вы можете создать подкласс NSScrollView и переопределить -tile.

1 голос
/ 02 августа 2012

Наткнулся на ваш вопрос на месяц позже, но для других людей, у которых такая же проблема ...

У документов Apple есть хорошее решение, которое сработало для меня: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextUILayer/Tasks/TextInScrollView.html

Их ответ направлен на NSTextView, но, похоже, любой подкласс NSView должен работать.

// Create scroll view & set its properties
NSScrollView *scrollview = [[NSScrollView alloc] initWithFrame:[[theWindow contentView] frame]];
NSSize contentSize = [scrollview contentSize];
[scrollview setBorderType:NSNoBorder];
[scrollview setHasVerticalScroller:YES];
[scrollview setHasHorizontalScroller:NO];
[scrollview setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

// Create text view and set its properties, setting content size same as scroll view
NSTextView* theTextView = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, contentSize.width, contentSize.height)];
[theTextView setMinSize:NSMakeSize(0.0, contentSize.height)];
[theTextView setMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
[theTextView setVerticallyResizable:YES];
[theTextView setHorizontallyResizable:NO];
[theTextView setAutoresizingMask:NSViewWidthSizable];
// Leave these two off if it isn't an NSTextView...
[[theTextView textContainer] setContainerSize:NSMakeSize(contentSize.width, FLT_MAX)];
[[theTextView textContainer] setWidthTracksTextView:YES];

// And connect up the view hierarchy
[scrollview setDocumentView:theTextView];
[theWindow setContentView:scrollview];
[theWindow makeKeyAndOrderFront:nil];
[theWindow makeFirstResponder:theTextView];

Намного дольше, чем я ожидал, но это работает.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...