6

スライダーのつまみをドラッグするのではなく、タップして UISlider の特定のポイントをタップすると、アクションを起動したいと考えています。

スライダーの値を設定するポイントで UISlider をタップするにはどうすればよいですか?

コードのスニペットをいただければ幸いです。

4

2 に答える 2

36
    UISlider *slider = [[[UISlider alloc] init] autorelease];
…

スライダーのセットアップ

…
UITapGestureRecognizer *gr = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)] autorelease];
[slider addGestureRecognizer:gr];
- (void)sliderTapped:(UIGestureRecognizer *)g {
     UISlider* s = (UISlider*)g.view;
    if (s.highlighted)
        return; // tap on thumb, let slider deal with it
    CGPoint pt = [g locationInView: s];
    CGFloat percentage = pt.x / s.bounds.size.width;
    CGFloat delta = percentage * (s.maximumValue - s.minimumValue);
    CGFloat value = s.minimumValue + delta;
    [s setValue:value animated:YES];
}
于 2012-05-17T08:32:03.247 に答える
2

v1 がその場所 uislider\ の背後に無地の背景を持つ uiview である場合は、uiview touchesbegan 関数を試してください

  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  UITouch *touch = [touches anyObject];
  if ([touch view] == v1)
  {
    CGPoint location = [touch locationInView:v1];
    NSInteger i = location.x;
  }

次に、v1 フレーム x 値 = 50 および i = 5 の場合は 10 パーセントを意味する v1 フレームを掛けて xpoint のパーセンテージを取得し、パーセンテージ値にスライダー値を掛けてスライダー値を変更します

于 2012-05-16T14:31:16.287 に答える