首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISlider事件

UISlider事件
EN

Stack Overflow用户
提问于 2011-01-12 01:15:53
回答 4查看 22K关注 0票数 18

我使用的是一个UISlider,它是自动更新的,除非用户正在触摸滑块按钮。因此,我是在由NSTimer自动更新的函数中这样做的:

代码语言:javascript
复制
if (!isSliderTouched) {
    [progressSlider setValue: progressValue];
}

当用户松开手指时,如何跟踪此事件的结束。只要用户与此控件交互,我希望设置isSliderTouched。

编辑:这应该是情节:

YES

  • user

  • 用户开始下载/触摸UISlider => isSliderTouched =发行版/取消触摸UISlider => isSliderTouched = NO

溶液

代码语言:javascript
复制
UIControlEventTouchDown
UIControlEventTouchUpInside
[progressSlider addTarget:self action:@selector(sliderMoveStart) forControlEvents:UIControlEventTouchDown];

干杯,恩多

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-12 04:38:56

您可以使用:

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

若要检测touchDowntouchUp事件何时发生,请执行以下操作。您可以相应地设置您的国旗。

我猜从您的代码片段中可以猜到,您正在使用UISlider作为进度表。你考虑过用UIProgressView代替吗?

票数 15
EN

Stack Overflow用户

发布于 2013-03-09 16:29:01

这是标记解决,但我想添加另一个解决方案,我觉得更干净。

代码语言:javascript
复制
if (!progressSlider.highlighted) {
    [progressSlider setValue: progressValue];
}
票数 9
EN

Stack Overflow用户

发布于 2013-10-05 13:47:21

跟踪用户是否与UISlider交互的更好方法是使用连续标志。

如果您只想在操作完成后才触发滑块操作,并且用户已将手指从其上移开,则使用

代码语言:javascript
复制
[blurSlider  addTarget:self action:@selector(blurSliderChanged) forControlEvents:UIControlEventValueChanged];
    blurSlider.continuous = NO;

否则,默认情况下将其设置为“是”。

代码语言:javascript
复制
[blurSlider  addTarget:self action:@selector(blurSliderChanged) forControlEvents:UIControlEventValueChanged];
    blurSlider.continuous = YES;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4664506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档