「上」および「下」キーを使用してテキストビューで行から行に移動すると、このスクロール動作が発生します-カーソルが一番上にあり、「上」を押すと(またはその逆)、ドキュメントの半分がスクロールしますつまり、現在の行はテキストビューの真ん中にあります。
この動作を無効にすることはできますか? 1行だけスクロールさせることはできますか?現在の行が常に一番上 (または一番下) にあるようにするには?
「上」および「下」キーを使用してテキストビューで行から行に移動すると、このスクロール動作が発生します-カーソルが一番上にあり、「上」を押すと(またはその逆)、ドキュメントの半分がスクロールしますつまり、現在の行はテキストビューの真ん中にあります。
この動作を無効にすることはできますか? 1行だけスクロールさせることはできますか?現在の行が常に一番上 (または一番下) にあるようにするには?
私はパーティーに少し遅れていることを知っていますが、これは適切に回答されていないので、試してみます. NSTextViews でも同じ問題がありました。-scrollRangeToVisible を使用して挿入位置をビューの可視四角形に移動すると、キャレットを画面の (垂直) 中央に配置するというスクロールの習慣がありました。私がしたことは、代わりに [NSView scrollRectToVisible] を使用することでした。これは、四角形をビューの可視四角形にするために必要な最小距離をスクロールするためです。
NSRange caretRng = NSMakeRange(caretLocation, 0);
NSLayoutManager* lm = [view layoutManager];
NSRange glyphRange = [lm glyphRangeForCharacterRange:caretRng actualCharacterRange:nil];
NSRect glyphRect = [lm boundingRectForGlyphRange:glyphRange inTextContainer:[view textContainer]];
[view scrollRectToVisible:glyphRect];
それが役に立てば幸い!
NSTextView (NSText 経由) には-scrollRangeToVisible:というメソッドがあります。NSTextView をサブクラス化し、-scrollRangeToVisible をオーバーライドして、独自のスクロール動作を直接指定することを検討してください。
動作を正しくするためのより具体的なヘルプが必要な場合は、別の質問を投稿して、必要な動作とそれを取得しようとしたコードを正確に指定してください。