UISlider
ファーストレスポンダーとして設定し、その現在の値をプログラムで現在のタッチの場所に設定することは可能ですか?
アプリの設定方法には、UIView
画面全体を占めるコンテナーがあります。コンテナ内のUIView
下端に別のオフスクリーンがあります(これをbottomBarと呼びます)。bottomBarの内側にUISlider
要素があります。
ユーザーが画面の下端に沿ってスワイプすると、スライダー付きのbottomBarがビューに移動するという考え方です。私が達成しようとしているのは、をアクティブにしてUISlider
、スライダーの位置(値)をユーザーがタッチする位置に設定することです。これは可能ですか?
私はこれを成し遂げるためにかなり醜いハックを見つけました。しかし、これよりもエレガントなソリューションが必要ですか?
CGPoint sliderPos = [touch locationInView:pageSlider];
float newSliderValue = sliderPos.x/pageSlider.frame.size.width*pageSlider.maximumValue;
if (sliderPos.x<=0) {
pageSlider.value = 0;
}
else if(newSliderValue>=pageSlider.maximumValue) {
pageSlider.value = pageSlider.maximumValue;
}
else {
pageSlider.value = newSliderValue;
}
上記のコードで私が抱えている2つの特定の問題は、a)親指の長さを無視するため、親指が正確に正しく配置されないことと、b)親指が動くときに強調表示されないことです。