UISlider события - PullRequest
       2

UISlider события

16 голосов
/ 12 января 2011

Я использую UISlider, он обновляется автоматически, за исключением того, что пользователь касается ползунка.поэтому я сделал это в функции, которая автоматически обновляется с помощью NSTimer:

if (!isSliderTouched) {
    [progressSlider setValue: progressValue];
}

Как отследить окончание этого события, когда пользователь отпускает палец.Я хочу установить isSliderTouched, пока пользователь взаимодействует с этим элементом управления.

РЕДАКТИРОВАТЬ : это должен быть сюжет:

  1. пользователь начинает перетаскивать / касаться UISlider=> isSliderTouched = ДА
  2. пользователь выпускает / не касается UISlider => isSliderTouched = NO

Решение :

UIControlEventTouchDown
UIControlEventTouchUpInside
[progressSlider addTarget:self action:@selector(sliderMoveStart) forControlEvents:UIControlEventTouchDown];

ура эндо

Ответы [ 4 ]

14 голосов
/ 12 января 2011

Вы можете использовать:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

, чтобы определить, когда происходят события touchDown и touchUp.Вы можете установить свой флаг соответствующим образом.

Я думаю, из вашего фрагмента кода, что вы используете UISlider в качестве индикатора прогресса.Рассматривали ли вы вместо этого использование UIProgressView?

8 голосов
/ 05 октября 2013

Лучший способ отследить, завершил ли пользователь взаимодействие с UISlider, - использовать непрерывный флаг.

Если вы хотите вызвать действие ползунка только после того, как действие завершено и пользователь убрал палец с него, используйте

[blurSlider  addTarget:self action:@selector(blurSliderChanged) forControlEvents:UIControlEventValueChanged];
    blurSlider.continuous = NO;

В противном случае по умолчанию установлено значение YES.

[blurSlider  addTarget:self action:@selector(blurSliderChanged) forControlEvents:UIControlEventValueChanged];
    blurSlider.continuous = YES;
7 голосов
/ 09 марта 2013

Это помечено как решенное, и все же я хотел бы добавить к этому еще одно решение, которое я считаю более чистым.

if (!progressSlider.highlighted) {
    [progressSlider setValue: progressValue];
}
1 голос
/ 12 января 2011

когда пользователь касается ползунка, вы можете установить флаг логической переменной и сделать его НЕТ. и в методе обновления проверьте, является ли флаг ДА или НЕТ.

...