отредактируйте свой ответ, чтобы я мог открепить -1 ^^

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

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

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

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

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

Решение:

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

ура эндо

 AsifHabib28 нояб. 2013 г., 10:54
TouchUpInSide вызывается дважды :(
 endo.anaconda12 янв. 2011 г., 03:01
Я попытался объяснить это лучше, смотрите обновление
 madmik312 янв. 2011 г., 02:50
Я читал это несколько раз, и мне до сих пор не ясно, чего ты хочешь. Но TouchUpInside - это событие, которое вы слушаете, чтобы определить, когда пользователь поднимает палец вверх.

Ответы на вопрос(4)

Решение Вопроса

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

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

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

 endo.anaconda12 янв. 2011 г., 13:06
спасибо за подсказку. UIProgressView не имеет кнопки для скольжения, так что это не то, что мне нужно
 Geebs18 авг. 2013 г., 05:34
Не уверен в правилах SO, просто хотел показать вам, ребята, что есть лучший способ сделать это для элементов управления UISlider. Смотри мой ответ.
 serhats15 дек. 2012 г., 19:16
непрерывный параметр - это то, что вам нужноdeveloper.apple.com/library/ios/documentation/uikit/reference/...

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

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

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

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

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

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

 endo.anaconda12 янв. 2011 г., 02:44
отредактируйте свой ответ, чтобы я мог открепить -1 ^^
 Robin12 янв. 2011 г., 02:35
чем вы должны использовать метод valueChanged или функцию, которая вызовет функцию, которая связана с valueChanged
 endo.anaconda12 янв. 2011 г., 02:32
Я думаю, что вы меня не поняли. я хочу, чтобы пользователь мог использовать ползунок, но не так, чтобы процесс автоматического обновления делал обновление, пока пользователь его использует.
 endo.anaconda12 янв. 2011 г., 02:36
нет, когда пользователь коснулся кнопки, но не двигается. автоматическое обновление следует.
 Robin12 янв. 2011 г., 02:42
чем на событиях касания ползунка, вы можете установить флаг логической переменной и сделать его НЕТ. и в методе обновления проверьте, является ли флаг ДА или НЕТ.

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

if (!progressSlider.highlighted) {
    [progressSlider setValue: progressValue];
}
 Max Strater04 нояб. 2013 г., 04:43
Мне показалось, что этот метод определяет, когда ползунок был впервые нажат, а не когда его отпустили.
 Oliver Zhang06 апр. 2017 г., 10:18
Я разрабатываю индивидуальный аудиоплеер с использованием UISlider в качестве контроля прогресса. И это именно то, что мне нужно. Это элегантно Большое спасибо!
 Geebs13 дек. 2013 г., 22:16
Макс, это на самом деле дает состояние (коснулся или не коснулся), а не обнаружение событий прессы или выпуска. Человек, задающий вопрос, хотел установить isSliderTouched на основе начальных / конечных событий. Я предполагаю, что он может просто использовать свойство «подсвеченный» вместо создания isSliderTouched и определения начала и конца касания.
 Geebs26 окт. 2013 г., 20:19
Несколько человек почему-то проголосовали за это. Возможно, мне следовало бы объяснить лучше: у объектов UISlider есть свойство «подсвечено», которое имеет значение YES при касании / перетаскивании слайдера. Вы можете использовать это непосредственно, чтобы понять, когда обновлять значение, а когда нет. Если кто-то хочет понизить голос, пожалуйста, дайте мне знать, что вы думаете, не так с ответом :)

Ваш ответ на вопрос