2012-04-20 11 views
2

私はUISliderをクリック可能にしたいと思います。クリック時の値を "空白"に変更するには、ゼロに設定されています。スライダの中央をクリックすると、中央にジャンプします。これを行う方法はありますか?Clickable UISlider

答えて

3

jrtc27と似たようなものを提案したいが、サブクラス化しないでください:UI(Tap)GestureRecognizerをスライダに追加してください。

UISlider *slider = [[[UISlider alloc] init] autorelease]; 
//configure slider 
UITapGestureRecognizer *tapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)] autorelease]; 
[slider addGestureRecognizer:tapGestureRecognizer]; 


- (void)sliderTapped:(UIGestureRecognizer *)gestureRecognizer { 
    UISlider *slider = (UISlider *) gestureRecognizer.view; 
    //setValue 
} 
+1

そしてクリックした場所からどのように価値を得ることができますか? – Michal

+0

私は推測させてください:あなたは文書を調べるのが好きではありませんか?しかし、ヒント:['locationInView:'](https://developer.apple.com/library/ios/documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009279-CH1 -SW23)はあなたを助けます。 SOとWebにジェスチャ認識プログラムのサンプルコードがたくさんあります。 – vikingosegundo

+0

ナー、私はココアの初心者です。私はJava関連の言語を育ったので、Objective-Cであまり使われていないget、set、is-onなどのメソッドに慣れています。今は論理的に見えるlocationInViewですが、... getLocationInViewのようなものを探しています。私はそれに慣れるでしょう、今私は方法を学んでいます:) – Michal

0

それをサブクラス化し、-touchesBeganメソッドを変更します。タッチが十分に離れている場合は、-setValue:を呼び出します。それ以外の場合はスーパー実装を呼び出します(ジャンプする場合は常に-setValueを呼び出すことができます)。

+0

ワウは、1つの機能には複雑です。時間のおかげで、私はそれを渡さなければならないと信じています...ありがとう。 – Michal