2009-05-02 21 views
2

最後の2つを除いて、チックポイントにスナップしないNSSliderを使用したいと思います。これは、[システム環境設定] - > [省エネルギー] - > [コンピュータスリープ]のスライダと同じ動作です。これを行う方法に関するアイデア?NSSliderの一部を目盛りで止めるには?

答えて

2

私はぶっきらぼう簡単な方法を知りませんが、それはそれまで来れば、あなたはあなた自身のNSSliderCellのサブクラスを作成し、これらの3つの方法の一部またはすべてをオーバーライドすることができます:

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView; 
- (BOOL)continueTracking:(NSPoint)lastPoint at:(NSPoint)currentPoint inView:(NSView *)controlView; 
- (void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:(NSView *)controlView mouseIsUp:(BOOL)flag; 
0

は私が最善だと思いますNSSliderCellとoverrideのいくつかまたはすべてのチックメソッドをサブクラス化することです。

- (double)closestTickMarkValueToValue:(double)aValue 

私の推測では、その方法は、あなたがで停止を指すかを選択することを可能にするということですが、それが動作しない場合....

あなたはNSSliderが連続作ることができます。あなたのターゲットは、ユーザーがスライダーを動かすときに設定したアクションを受け取ります。スレッショルドを上回る/下回ると、目盛りで停止するかどうかを変更できます。これは、あなたが探しているものかもしれないし、そうでないかもしれません(バインディングなどではうまくいきません)が、ハックの可能性があります。

関連する問題