我正在实施一个UISlider,允许用户选择足球场上的位置。滑块的想法是当滑块值高于某个值(带箭头的部分)时,字段向前滚动。
我的问题是我只能响应UIControlEventValueChanged上的滑块 - 所以该字段只会在用户实际移动滑块时向前滚动。只要价值高于一定数量,我希望它向前推进。
知道我怎么能这样做吗? (我对任何建议持开放态度,包括不使用UISlider的实现,复合实现等)。
以下是实施:
答案 0 :(得分:3)
处理此问题的最简单方法是使用计时器。将NSTimer实例变量添加到您的类中,为了下面的示例而命名 - moveTimer
,然后设置如下内容:
- (void)sliderChanged:(UISlider *)slider
{
if(slider.value > 5)
{
if(moveTimer == nil)
{
moveTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self action:@selector(move) repeats:YES];
}
}
else
{
if(moveTimer != nil)
{
[moveTimer invalidate];
moveTimer = nil;
}
}
}
- (void)move
{
// update the background behind your slider
}
答案 1 :(得分:0)
我找到了一个适合我的解决方案:
[self performSelector:@selector(sliderMoved) withObject:nil afterDelay:0.5];
我在每0.5秒后调用sliderMoved方法,当时slider.value> 0.5。
答案 2 :(得分:-1)
尝试将滑块的continuous
属性设置为YES。