2

UISlider を使用してラベルの値を移動する必要があるという要件があります。私はこのコードで試しました

[slider addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents: UIControlEventTouchDragInside];

- (void)dragMoving:(UIControl *)c withEvent:ev {  
    UITouch *touch = [[ev allTouches] anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];
     sliderLabe.frame = CGRectMake(touchPoint.x,250, 270, 40);
}

SliderLabel はスライダーのすぐ下にありますが、速くドラッグすると奇妙な結果が得られますが、mu スライダーをゆっくり動かすと正常に動作します。

4

1 に答える 1

3

スライダーが移動している間、新しい値を計算して呼び出しvalueChangedます。UIControlEventTouchDragInsideこれは、追加のハンドラーに干渉する可能性があります。

slider.continuousが設定されている場合は、YESあなたの label-moving-code をvalueChangedハンドラーに移動してみてください。

もちろん、このメソッドではタッチ位置がわからないため、スライダーの他のプロパティから計算する必要があります: frame.origin.xframe.size.widthminimumValuemaximumValueおよびvalue

于 2012-05-23T13:20:03.543 に答える