0

NSScrollView 内に NSTextView があります。NSTextView に新しいデータを再入力した後、以前の場所に正確にスクロールしたいと考えています。これまでのところ、以下のコードのバリエーションを試してみましたが、まったく正しくなりません。

必要なのはsetDocumentVisibleRectメソッドですが、ありません。

NSRect oldVisibleRect = [[[self scrollView] contentView] documentVisibleRect];

[データを再入力するコード]

[[[self scrollView] contentView] scrollToPoint:newPoint];

何か案は?

4

1 に答える 1

2

もっと具体的に説明する必要があります。これが「まったく正しくない」のはどうでしょうか。

-[NSView scrollRectToVisible:]

レシーバーの最も近い祖先 NSClipView オブジェクトを必要な最小距離だけスクロールして、レシーバーの指定された領域がクリップ ビューに表示されるようにします。

NSTextView は NSView のサブクラスであるため (特定のビューの座標が反転しているかどうかを常に考慮する必要があります...)、-scrollRectToVisible を使用できます。

また、テキスト ビューのコンテンツの変更が以前とまったく同じでない限り、以前に表示されていた rect はまったく同じにはならないため、完全に動作するとは思わないでしょう。属性 (構文の強調表示など) をテキストに適用するだけの場合は、完全なリロード (および再スクロール) を必要とするテキスト ビュー (テキスト ストレージまたはコンテナー) に対して何もする必要はありません。要するに「何をしようとしているのか?」

于 2009-11-27T13:40:59.813 に答える