2

テーブルのセルにslider、スライダーの初期化コードがあります。

UISlider* slider = [[UISlider alloc] init];
slider.continuous = NO;

slider.maximumValue = 2;
slider.minimumValue = 0.5f;
slider.value = 0.5f;

...
//put slider into cell

そして、私はこのスライダーの親指を動かすことができません。なんで?何が悪いのか教えてください。

更新:スライダーの初期値を0.500001fに設定すると、機能します!

4

4 に答える 4

2

これがこの質問に直接関連しているとは思えませんが、同様の問題がありました.スライダーはプログラムによって値が設定され、移動する可能性がありますが、ドラッグして移動することはできませんでした. このメソッドの (x,y) 位置が、含まれているビューではなく、スライダーである UIView に相対的であることを認識せずに、スライダー サブクラスの trackRectForBounds メソッドをコーディングしたことが判明しました。そのため、initWithFrame のスライダーに使用したのと同じ CGRect をトラック境界に使用しました。これにより、スライダー トラックがスライダー ビューの外側に配置されます。その結果、スライダーのサムをドラッグできず、トラックまたはスライダーのビューでのクリックは、それを含むビューによって処理されました。

たまたまスライダーのビューに明確な背景色を与えていなかったら、トラックがビューの外にあることがはっきりしなかったでしょう。

trackRectForBounds の (x,y) を (0, 0) に変更するか、オーバーライド trackRectForBounds を完全に削除すると、すべてが完全に機能しました。

たぶん、この投稿は他の誰かを助けるでしょう。

于 2010-12-02T19:51:02.080 に答える
0

親指でスライダーがアクティブにならない場合は、その上に UIView がある可能性があります。コードを投稿してくださいcellForRowAtIndexPath

于 2010-07-12T04:45:33.393 に答える
0

問題を推定するのに十分なコードがありません。しかし、私は最近同じ問題を抱えていたので、私の問題が何であるかをお伝えし、それが役立つことを願っています.

基本的に、セルを異なるラベルとビューで異なる領域に分割するだけです。スライダーをサブビューとして UILabel オブジェクトに追加すると、スライダーが動かないことがわかりました。したがって、最初に UIView を同じ領域に追加し、次に UILabel と UIslider の両方をこの UIView に追加します。これですべてが機能します。

于 2016-03-12T20:31:09.320 に答える