【问题标题】:UISlider behaviour in iOS7 versus iOS6iOS7 与 iOS6 中的 UISlider 行为
【发布时间】:2014-01-21 02:28:45
【问题描述】:

我注意到 iOS7 中的 UISlider 的行为与 iOS 6 和 iOS 5 中的不同:

假设您有一个 min=0 和 max=10 的滑块,当前值为 0。当您第一次触摸“旋钮”时,会发送一条 valueChanged 消息,其中 slider.value=0.269(而不是预期的 0)和旋钮向中间移动。通常,触摸滑块会将其移向中间值(本例中为 5),当前距离中间越远,移动越多。

这一切在 iOS6 中都没有发生,我想恢复旧的行为,但不知道如何实现。

【问题讨论】:

  • 听起来除了filing a bug之外我们无能为力。
  • 已提交错误。当 Apple 回复时,我会更新此内容。

标签: ios uislider


【解决方案1】:

Apple 尚未对我的错误报告发表评论,但我或多或少偶然找到了解决方案:为旋钮安装自定义图像可恢复 iOS 6 的行为:

[self.slider setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal];

【讨论】:

  • 如果我想使用默认缩略图怎么办?有什么解决办法吗?苹果有什么回应吗?
  • 不幸的是,Apple 还没有回复我的错误报告(如果你想欺骗它,那就是 15743419),我不知道有任何其他修复或解决方法。对不起!
  • 这越来越奇怪了。如果我为UIControlState.Normal 设置拇指图像,它会在每次触摸时开始远离中心,这是完全相反的行为吗?在.Selected 中,它似乎无需移动即可正常工作。
  • 这在 iOS 9.2.1 中仍然是一个问题。使用亮度滑块时可以在 iPhone 设置应用程序中重现。欺骗了你的雷达。
  • 这在 iOS 11.2.1 中仍然是一个问题。使用亮度滑块时可在 iPhone 设置应用中重现。
【解决方案2】:

在 iOS 9 上,您需要设置 .Normal、.Selected 和 .Highlighted 状态才能工作。经过5小时的挣扎,我发现了这一点。苹果加油!

[_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateNormal];
[_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateSelected];
[_sliderView setThumbImage:[UIImage imageNamed:@"knob"] forState:UIControlStateHighlighted];

【讨论】:

    【解决方案3】:

    我对其进行了测试,可以确认所描述的行为。

    有趣的是,当应用程序使用 iOS 6 SDK 构建但设备/模拟器仍运行 iOS 7(在兼容模式下)时,不会出现该错误。所以看起来它与新外观有关。

    File a bug.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 2014-05-11
      相关资源
      最近更新 更多