IOS-滑块仅在touchesEnded时作出反应

时间:2013-04-14 08:34:11

标签: ios uislider

我是iOS的新手,我想知道如何让我的滑块在触摸结束时做出的反应。 我用这个方法搞清楚了:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

但我无法使其发挥作用。

有没有人可以用简单的方式帮助我清楚的例子?

请以编程方式回答,我不使用storyBoard。

提前致谢!!!

4 个答案:

答案 0 :(得分:1)

您可以添加手势识别器:

 UITapGestureRecognizer *tapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSliderTap:)] autorelease];
 [slider addGestureRecognizer:tapGestureRecognizer];

- (void)onSliderTap:(UIGestureRecognizer *)gestureRecognizer { 
   // handle event
}

或在滑块上添加一些操作:

[slider addTarget:self action:@selector(onTouchEnded:) forControlEvents:UIControlEventTouchUpInside];

答案 1 :(得分:0)

你可以联系UIControlEventTouchUpInside-Outside代替-ValueChanged(如果你现在这样做的话)。

修改:或者,我会说更优雅,使用UIControlEventValueChanged,但也将事件作为参数提供给您的方法:

[self.slider addTarget:self action:@selector(handleValueChanged:withEvent:) forControlEvents:UIControlEventValueChanged];

然后检查触摸的阶段,看看它是否处于ended状态。

答案 2 :(得分:0)

找到了答案!

这些人帮了我很多:Detecting touches on a UISlider?

准确度很低:

相关滑块的操作将其指定为:

[self.slider addTarget:self action:@selector(touchEnded:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];

,方法签名是:

- (IBAction)touchEnded:(id) sender

对于故事板,我觉得将动作分配给滑块有点不同。

感谢您的回答!

答案 3 :(得分:0)

您必须将属性设置为连续。

包含一个布尔值,指示滑块值中的更改是否会生成连续更新事件。

mySlider.continuous= NO;