Так что я был сожжен этим несколько раз. Я пытаюсь создать NSTextView, который можно прокручивать.
Единственный способ заставить его работать - это иметь Xib, но сейчас он перестал работать после того, как я добавил Stack View в соседний Разделенное представление для "Бог знает в чем причина".
Так, что я сделал?
У меня есть код для кода, скопированного в Apple Docs, как для текста в представлении прокрутки вот так:
// https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/TextUILayer/Tasks/TextInScrollView.html
BOOL deviateFromAppleScrollDoc = NO;
_scrollView = [[NSScrollView alloc]
initWithFrame:[[self view] frame]];
// Apple Has
// [[theWindow contentView] frame]];
// but we are in a sub-View-Controller
NSSize contentSize = [_scrollView contentSize];
[_scrollView setBorderType:NSNoBorder];
[_scrollView setHasVerticalScroller:YES];
[_scrollView setHasHorizontalScroller:NO];
[_scrollView setAutoresizingMask:NSViewWidthSizable |
NSViewHeightSizable];
_editorView = [[EditorView alloc]
initWithFrame:NSMakeRect(
0, 0,
contentSize.width, contentSize.height)];
[_editorView setMinSize:NSMakeSize(0.0, contentSize.height)];
[_editorView setMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
[_editorView setVerticallyResizable:YES];
[_editorView setHorizontallyResizable:NO];
if (deviateFromAppleScrollDoc)
{
[_editorView setAutoresizesSubviews:YES];
[_editorView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
}
else
{
[_editorView setAutoresizingMask:NSViewWidthSizable];
}
[[_editorView textContainer]
setContainerSize:NSMakeSize(contentSize.width, FLT_MAX)];
[[_editorView textContainer] setWidthTracksTextView:YES];
if (deviateFromAppleScrollDoc)
{
[[_editorView textContainer] setHeightTracksTextView:YES];
}
if (deviateFromAppleScrollDoc)
{
NSClipView *clipView = [[NSClipView alloc] init];
[clipView setDocumentView:_editorView];
[_scrollView setContentView:clipView];
}
else
{
[_scrollView setDocumentView:_editorView];
}
[[self view] addSubview:_scrollView];
Что это мне дает?
![Halfway Scroll Description](https://i.stack.imgur.com/zAWYx.png)
Как вы можете сказать, существует NSTextView. Он не заполняет контейнер так, как мне бы хотелось.
Существует также представление прокрутки, и я могу сказать, что оно активно. Вы можете потянуть вниз и получить эффект отскока, но он не прокручивает документ так, как мне бы хотелось. Этот текст обрезается в середине предложения, и когда я добавляю к нему, представление не прокручивается при наборе текста, и даже если я прокручиваю, я не могу добраться до него.
Представление прокрутки "застряло" .
Я могу сделать так, чтобы оно заполняло все окно, если я изменил маску автоматического изменения размера на NSViewHeightSizable
примерно так:
[_editorView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
См. Здесь:
![Text View that fills the Rect](https://i.stack.imgur.com/2uNvJ.png)
К сожалению, он по-прежнему не прокручивается, а «Вид прокрутки» все еще «застрял».
Я не знаю, что изменить.
Я попытался добавить «NSClipView» и установить вместо этого «Представление содержимого» следующим образом:
NSClipView *clipView = [[NSClipView alloc] init];
[clipView setDocumentView:_editorView];
[_scrollView setContentView:clipView];
Это также не работает.
Более того, оно делает что-то напуганное с шириной и некоторые буквы обрезаются. Неприемлимо. Решений пока нет.
![The NSClipView iteration](https://i.stack.imgur.com/BQ5PM.png)
Что мне не хватает?
Что мне нужно попробовать / установить / сделать?
Спасибо!
ОБНОВЛЕНИЕ:
Просмотр прокрутки выполняет прокрутку документа, когда я активирую меню поиска в NSTextView.
Все еще мистифицированный.
См. здесь:
![Scroll view scrolls when find bar is active](https://i.stack.imgur.com/N8e0u.png)