NSScrollView をドラッグ操作に合わせて自動スクロールする | OS X | Objective-C プログラミング

PROGRAM


NSScrollView 上に配置したコンテンツビューでマウスのドラッグ操作が行われたとき、ビューの範囲外までドラッグされた場合に、コンテンツビューを相当する位置まで自動でスクロールさせることができます。

NSScrollView では NSClipView を使って、コンテンツビューの表示範囲を制御していますが、その表示範囲を、コンテンツビューとして設置した NSView の autoScroll: メソッドを使って制御できます。この autoScroll: メソッドには NSEvent で表示位置を指定します。

 

たとえば、ドラッグ操作と併せて自動スクロールをしたい場合は、NSView の mouseDragged: メソッドをオーバーライドして、その引数に渡された NSEvent の値を自身の autoScroll: メソッドに渡すだけで実現できます。

- (void)mouseDragged:(NSEvent *)theEvent

{

[self autoscroll:theEvent];

}

このようにすることで、ドラッグされた分量に合わせて自動的にスクロールビューがスクロールされます。

このときの実際の動きとしては、NSView の autoScroll: メソッドが呼び出されると、それを内包する NSClipView の autoScroll: メソッドが呼び出され、適切な位置へ自動的にスクロールされることになるようです。

[ もどる ]