Как я могу постоянно обновлять, когда UISlider превышает определенное значение? - PullRequest
1 голос
/ 24 сентября 2011

Я внедряю UISlider, который позволяет пользователям выбирать позицию на футбольном поле.Идея ползунка заключается в том, чтобы поле прокручивалось вперед, когда значение ползунка выше определенного значения (участок со стрелкой).

Моя проблема заключается в том, что я могу отвечать только на ползунок на UIControlEventValueChanged - поэтому поле будет прокручиваться только вперед, когда пользователь фактически перемещает ползунок.Я бы хотел, чтобы он двигался вперед, пока значение превышает определенную величину.

Есть идеи, как мне это сделать?(Я открыт для любых предложений, включая реализацию, которая не использует UISlider, составные реализации и т. Д.).

Вот реализация:

The playYardageSlider

Ответы [ 3 ]

3 голосов
/ 24 сентября 2011

Самый простой способ справиться с этим - с помощью таймера. Добавьте переменную экземпляра 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
}
0 голосов
/ 25 сентября 2011

Я нашел решение, которое работает для меня:

    [self performSelector:@selector(sliderMoved) withObject:nil afterDelay:0.5];

Я вызываю метод sliderMoved через каждые 0,5 секунды, когда slider.value> 0,5.

0 голосов
/ 24 сентября 2011

Попробуйте установить для свойства continuous ползунка значение YES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...