限制滑动 UISlider 超过某个点
Posted
技术标签:
【中文标题】限制滑动 UISlider 超过某个点【英文标题】:Limit sliding UISlider past certain point 【发布时间】:2013-04-24 12:32:54 【问题描述】:让我们假设有一个UISlider
,我为其设置了一个特定的值。然后,滑块手柄按预期移动到该值。
现在我想让用户来回滑动滑块的手柄,但不要将UISlider
的值设置为小于我以编程方式分配给它的值。
例如,我有一个UISlider
,其最小值为 0,最大值为 100,我将其值设置为 50。我不希望用户滑动“左”于 50,但在“对”我想让用户来回滑动手柄。
你如何在 Obj-C 中实现这种行为?
【问题讨论】:
【参考方案1】:您应该首先确保更新事件是连续发送的:
mySlider.continuous = YES;
您也可以在故事板/笔尖中执行此操作(正如 @fDmitry 所提到的,这是 IB 中的默认状态)。
然后,您必须将滑块链接到 .h 文件中的 IBAction
(通过从 IB 到代码的 ctrl 拖动创建链接),并将其分配给滑块的“值已更改”事件。这将创建一个这样的方法:
-(IBAction)sliderValueChanged:(id)sender;
这样实现:
- (IBAction)sliderValueChanged:(id)sender
float maxValue = 50.0f;
if ([(UISlider*)sender value] > maxValue)
[(UISlider*)sender setValue:maxValue];
【讨论】:
是我弄错了,还是 IB 的 UISliders 默认是连续的? 他们是。我添加它以防万一。也许他在寻找解决方案时试图到处点击,却不小心禁用了它:p【参考方案2】:其实这个很简单:)
创建一个动作并将其指定为 UISlider 的 valueChanged 动作的选择器。在该方法中,执行一个简单的检查: 如果滑块的值小于 50,则设置为 50。
如果您需要任何进一步的帮助,我可以在课后编写一些示例代码。希望对您有所帮助!
【讨论】:
是的,这是一个很棒的主意!而且真的很容易实现,谢谢!【参考方案3】:将您的滑块连接到valueChanged:
操作。你应该像这样实现它:
- (void)mySliderValueChanged:(UISlider *)slider
CGFloat myMinValue = 50.0f; // should be a global variable
if(slider.value < myMinValue)
slider.value = myMinValue;
【讨论】:
以上是关于限制滑动 UISlider 超过某个点的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 中的 UISlider 没有响应滑动手势