是否可以设置UISlider
为第一响应者并以编程方式将其当前值设置为当前触摸的位置?
我的应用程序的设置方式我有一个UIView
占据整个屏幕的容器。在容器内,我UIView
在底部边缘有另一个屏幕外(我称之为底部栏)。在 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;
}
我在上面的代码中遇到的两个具体问题是它 a) 没有完全正确地定位拇指,因为它忽略了拇指的长度,并且 b) 拇指在移动时没有突出显示。