Как автоматически прокрутить NSTextView в Какао, чтобы центрировать текст по вертикали в окне? - PullRequest
2 голосов
/ 12 марта 2011

Я создаю текстовый редактор с NSTextView внутри NSScrollView и хотел бы автоматически прокручивать текстовое представление всякий раз, когда пользователь вставляет какой-либо текст, чтобы вставленный текст располагался вертикально по центру окна (или текстового представления).Я нашел этот пример кода, чтобы прокрутить его вверх, но не могу понять, как он работает.Я уже возился с этим кодом, но мое текстовое представление, кажется, прыгает вверх и вниз без какой-либо логики.Кто-нибудь может мне помочь?

- (void)scrollToTop:sender;
{
    NSPoint newScrollOrigin;

    // assume that the scrollview is an existing variable
    if ([[scrollview documentView] isFlipped]) {
        newScrollOrigin=NSMakePoint(0.0,0.0);
    } else {
        newScrollOrigin=NSMakePoint(0.0,NSMaxY([[scrollview documentView] frame])
                                        -NSHeight([[scrollview contentView] bounds]));
    }



      [[scrollview documentView] scrollPoint:newScrollOrigin];
}

1 Ответ

2 голосов
/ 25 мая 2011

Ну, я нашел решение:

NSRect insertionRect=[[self layoutManager] boundingRectForGlyphRange:[self selectedRange] inTextContainer:[self textContainer]];
NSPoint scrollPoint=NSMakePoint(0,insertionRect.origin.y+insertionRect.size.height+2*scrolling-[[NSScreen mainScreen] frame].size.height);
[self scrollPoint:scrollPoint];

, где textView - это IBOutlet для просмотра текста, а scrolling - это расстояние в пикселях от дна, где должна быть установлена ​​точка вставки. Просто поиграйте с ним, чтобы понять, как он работает.

...