【问题标题】:UISlider too sensitive when releasing touchUISlider 释放触摸时过于敏感
【发布时间】: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];

【问题讨论】:

标签: ios uikit uislider


【解决方案1】:

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

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

【讨论】:

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

试着改成这个:

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

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

【讨论】:

  • 感谢您的回复,但另一个答案正是我想要的:)
  • 谢谢!我不知道连续属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
相关资源
最近更新 更多