在 iOS 滑块上,我可以单击刻度上的任意位置还是必须拖动滑块旋钮?
Posted
技术标签:
【中文标题】在 iOS 滑块上,我可以单击刻度上的任意位置还是必须拖动滑块旋钮?【英文标题】:on the iOS slider, can I click anywhere on the scale or do I have to drag the slider knob around? 【发布时间】:2015-05-12 17:17:46 【问题描述】:我正在尝试使 ios 滑块尽可能与 android 滑块相似。一个主要区别是,在 Android 上,如果您单击滑块刻度上的任意位置,滑块旋钮将跳到该位置,而 iOS 似乎只能将其拖动到一个位置。有没有什么办法解决这一问题? 我想使用objective-C(我是新手)来做到这一点,但我不太确定从哪里开始。我了解用于存储滑块值的代码,但不了解如何更改获取该值的方法。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:主要思想是您需要检测滑块何时被点击,以及在滑块边界内被点击的位置。
因此,如果您可以检测到点击相对于滑块框架的 x 位置,然后只需将其除以滑块的宽度,就可以得到它在框架内的位置比率。乘以滑块的最大值即可完成。
实施注意事项:
有多种方法可以检测视图内的触摸。最简单的就是用 UIButton 覆盖它。更简洁的方法是继承 UISlider 并使用触摸事件touchStarted
、touchMoved
、touchEnded
来确定特定行为。你可以在 UIView 的类文档中找到它们的规范。
根据计算确定新的滑块值后,只需使用setValue:
方法设置即可。
【讨论】:
感谢您的回复。但我面临的问题不是我单击的滑块框架中的位置,而是滑块刻度(滑块条)上的位置。我不想让旋钮沿着刻度拖动,而是希望能够单击刻度上的任意位置并让旋钮跳到那个位置。 我相信滑块框架和实际比例是由一个常数相关的。因此,也许当您检测到触摸的 x 位置时,将其设为 x - 20 或其他值,直到它看起来正确?我不确定是否记录了实际的偏移量 - 可能是这样。 我会去找那个。希望这会为我指明正确的方向,如果我得到答案,我会回到这里。再次感谢您的帮助。 哦,我刚刚找到了!这将为您提供轨道的确切框架。只需传入滑块的边界即可。 developer.apple.com/library/ios/documentation/UIKit/Reference/…: 我正在考虑使用此类中的 setValue 方法,但不确定它会如何结束。你所说的关于保存我点击的位置是有道理的;那么如果有意义的话,我可以使用 setValue 来移动滑块旋钮以上是关于在 iOS 滑块上,我可以单击刻度上的任意位置还是必须拖动滑块旋钮?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 WPF C# 中更改滑块上刻度的设计(刻度的厚度、刻度的形状等)