UISlider 释放触摸时过于敏感

Posted

技术标签:

【中文标题】UISlider 释放触摸时过于敏感【英文标题】:UISlider too sensitive when releasing touch 【发布时间】:2014-03-03 12:39:49 【问题描述】:

当释放 UISlider 上的触摸时,滑块的值会发生轻微且无法控制的变化。它非常敏感,甚至在手指从屏幕上松开时也会发生变化。如何实现用户可以毫无问题地设置他想要的值?

这就是我创建 UISlider 的方式:

UISlider *slider = [[UISlider alloc] initWithFrame: CGRectMake(100.0, 100.0, 200.0, 40.0)];
slider.minimumValue = 0.0;
slider.maximumValue = 100.0;
[slider addTarget: self action: @selector(sliderChanged:event:) forControlEvents:UIControlEventAllEvents];
[slider setValue: 50.0 animated: NO];

【问题讨论】:

试试看..***.com/questions/11324359/…希望对你有帮助 【参考方案1】:

您正在为所有事件注册它。只为您的活动制作,就像

[slider addTarget: self action: @selector(sliderChanged:event:) forControlEvents: UIControlEventTouchDragInside];

【讨论】:

谢谢!这似乎只适用于获得正确的事件。但是在较低级别上,滑块的实际值仍然会在触摸端发生变化,不是吗?当我读出该值时,它可能与我收到的值不同。有没有办法确保在触摸结束时 value 属性也不会改变? 我用它玩了一些,但它仍然感觉过于敏感。有没有办法让它不那么敏感?抬起手指时,我经常会触发 touchMoved ,这应该避免。几乎不可能将手指笔直向上抬起。但是对于用户来说,这会改变价值——这并不是他想要的。【参考方案2】:

试着改成这个:

[slider addTarget: self action: @selector(sliderChanged:event:) forControlEvents: UIControlEventValueChanged];

如果您只想在手指抬起时触发目标,请尝试将UISlidercontinuous 属性设置为NO

【讨论】:

感谢您的回复,但另一个答案正是我想要的:) 谢谢!我不知道连续属性。

以上是关于UISlider 释放触摸时过于敏感的主要内容,如果未能解决你的问题,请参考以下文章

触摸结束时如何更改 UISlider Thumb 外观

UICollectionViews 线索内的 UISlider 不接收触摸事件

首次显示时如何使 UISlider 变粗?

如何在 iOS 中延迟 UISlider 的开始触摸事件?

UISlider 事件

iOS - 折叠动画 UISlider