Как отключить переход на новую строку NSTextView?

NSTextView делает переход на новую строку по умолчанию. Как я могу отключить это? Я делаю средство просмотра кода JSON, таким образом, я должен отключить это.

16
задан Eimantas 4 July 2010 в 09:02
поделиться

2 ответа

Я получил решение от: http://lists.apple.com/archives/cocoa-dev/2008/May/msg02396.html

Вы должны установить максимальную ширину NSTextView на очень большое число, чтобы это работало правильно. (Просто скопируйте максимальную высоту) И включите горизонтальную прокрутку NSScrollView, который является супервью NSTextView. Смотрите эти картинки:

http://www.flickr.com/photos/47601728@N06/4759470529/

alt text

http://www.flickr.com/photos/47601728@N06/4759470533/

alt text

Обновление

Я обнаружил, что мой старый код примера недостаточен, чтобы заставить его работать правильно. (из-за версии SDK?) Также Вот мой полный фрагмент исходного кода, который отключает word-wrap в OSX 10.8 SDK.

[self setMaxSize:CGSizeMake(FLT_MAX, FLT_MAX)];    
[self setHorizontallyResizable:YES];               
[[self textContainer] setWidthTracksTextView:NO];  
[[self textContainer] setContainerSize:CGSizeMake(FLT_MAX, FLT_MAX)];  

Обновление 2

Теперь Apple предоставляет официальное руководство по созданию NSTextView правильно. Надеюсь, это поможет.

Обновление 3

Я опубликовал пример проекта на Github. Смотрите эту страницу для конкретной реализации: https://github.com/Eonil/CocoaProgrammaticHowtoCollection/blob/master/ComponentUsages/TextView/ExampleApplicationController.swift?ts=4

Вот фрагмент кода из примера проекта.

        if wordwrap {
            /// Matching width is also important here.
            let sz1                                     =   scroll1.contentSize
            text1.frame                                 =   CGRect(x: 0, y: 0, width: sz1.width, height: 0)
            text1.textContainer!.containerSize          =   CGSize(width: sz1.width, height: CGFloat.max)
            text1.textContainer!.widthTracksTextView    =   true
        } else {
            text1.textContainer!.widthTracksTextView    =   false
            text1.textContainer!.containerSize          =   CGSize(width: CGFloat.max, height: CGFloat.max)
        }
25
ответ дан 30 November 2019 в 21:53
поделиться

Самый простой способ - в Interface Builder, в инспекторе просто измените выпадающее меню.

-7
ответ дан 30 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: