限制滑动UISlider过去某个点
我们假设有一个UISlider
我设置了一定的值。如预期的那样,滑块手柄将移动到该值。限制滑动UISlider过去某个点
现在我想让用户来回滑动滑块的手柄,但不要将UISlider
的值设置得比我以编程方式分配的值小。
因此,例如我有一个UISlider
最小值为0,最大值为100,我将它的值设为50.我不希望用户滑动“lefter”而不是50,而是在“正确“,我想让用户来回滑动手柄。
你如何在Obj-C中实现这种行为?
你应该首先确认更新事件连续发送:
mySlider.continuous = YES;
你也可以做,在你的情节提要/笔尖(由@fDmitry作为mentionned,这是IB默认状态)。
然后,您必须将滑块链接到.h文件中的IBAction
(通过从IB拖动到代码创建链接),并将其分配给滑块的“Value Changed”事件。这将创建一个方法是这样的:
-(IBAction)sliderValueChanged:(id)sender;
实现这样的说法:
- (IBAction)sliderValueChanged:(id)sender {
float maxValue = 50.0f;
if ([(UISlider*)sender value] > maxValue) {
[(UISlider*)sender setValue:maxValue];
}
}
这个人是很容易的,其实:)
创建行动并将其指定为选择器UISlider的行动的valueChanged。在该方法中,执行一个简单检查: 如果滑块的值小于50,则将其设置为50.
如果您需要任何进一步帮助,我可以在我的课程后面编写一些示例代码。希望能帮助到你!
是的,这是一个了不起的想法!真的很容易实现,谢谢! – 2013-04-24 12:40:36
您的滑块连接到valueChanged:
行动。你应该实现它像这样:
- (void)mySliderValueChanged:(UISlider *)slider
{
CGFloat myMinValue = 50.0f; // should be a global variable
if(slider.value < myMinValue)
{
slider.value = myMinValue;
}
}
我是否错误,或IB的UISliders默认连续? – dmee3 2013-04-24 12:46:12
他们是。我加了它以防万一。也许他在搜索解决方案时试图点击任何地方,并且意外地禁用了它:p – rdurand 2013-04-24 12:48:09
@rdurand我没有,但感谢通知,先生!公认! – 2013-04-24 13:10:32