2

NSScrollView 内に NSTextView を持つテキスト エディターを作成しており、ユーザーがテキストを挿入するたびにテキストビューを自動的にスクロールして、挿入されたテキストがウィンドウ (またはテキストビュー) の垂直方向の中央に配置されるようにしたいと考えています。このサンプル コードは、スクロール ビューの一番上までスクロールすることがわかりましたが、その仕組みがよくわかりません。私はすでにこのコードをいじっていますが、私のテキストビューはロジックなしで上下にジャンプしているようです。誰でも私を助けることができますか?

- (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];
}
4

1 に答える 1

2

さて、私は解決策を見つけました:

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 はIBOutlettextviewscrollingで、挿入ポイントを設定する必要がある下部からのピクセル単位の距離です。それをいじってみて、それがどのように機能するかを理解してください。

于 2011-05-25T18:47:55.847 に答える