在 UISlider 动画时触发 UIControlEventValueChanged?

Posted

技术标签:

【中文标题】在 UISlider 动画时触发 UIControlEventValueChanged?【英文标题】:Having the UIControlEventValueChanged fire when UISlider is being animated? 【发布时间】:2010-05-12 15:44:55 【问题描述】:

我已将 UISlider 设置为响应值更改事件:

[customSlider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
[customSlider addTarget:self action:@selector(sliderStart:) forControlEvents:UIControlEventTouchDown];
[customSlider addTarget:self action:@selector(sliderEnd:) forControlEvents:UIControlEventTouchUpInside];

我想将滑块动画到用户上次使用视图时离开的位置。我这样做:

[customSlider setValue:position animated:YES];

一切正常,除了,我建立了一个“标签”,它挂在滑块“旋钮”上,这样用户在移动滑块时可以看到值。在 UIControlEventValueChanged 调用“sliderMove”方法时设置“标签”的位置。

使用[slider setValue:position animated:YES] 时,滑块会移动,但事件不会触发。

是否有我可以联系到的代表或涵盖这种情况的活动?

感谢您提供的任何帮助:)

【问题讨论】:

【参考方案1】:

听起来像一个错误,请尝试通过调用解决此问题

[slider sendActionsForControlEvents:UIControlEventValueChanged];

在您以编程方式设置值之后。

【讨论】:

嗨,ChriB,谢谢:) 手动发送动作确实迫使它做出响应并表现得像它应该的那样?我实际上并不认为它会在动画期间调用委托方法。有没有办法控制动画的速度,比如在 UIAnimation 中,在做 [slider setValue:14 animated:YES] 时,如果我可以添加一个问题:) 不要认为有办法改变这一点。您应该将此作为一个新问题提出,也许其他人知道。 :) 嗯,11 年后,无论出于何种原因,setValue 都不会触发 valueChanged 操作。

以上是关于在 UISlider 动画时触发 UIControlEventValueChanged?的主要内容,如果未能解决你的问题,请参考以下文章

删除 UISlider 旋钮或快速更改图像

iOS - 折叠动画 UISlider

在没有 Timer 的情况下播放核心动画时如何自动更新 UISlider 的值

在 Objective C 中使用动画实现 UISlider

当 UISlider 一直拖到最后时会触发啥事件?

防止 UIScrollView 中的 UISlider 触发滚动