0

我是 iOS 新手,我想知道如何让我的滑块在触摸结束时做出反应。我用以下方法解决了这个问题:

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

但我不能让它工作。

有谁可以帮助我简单明了的例子?

请以编程方式回答,我不使用故事板。

提前致谢!!!

4

4 回答 4

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];
于 2013-04-14T08:53:15.183 回答
0

您可以连接UIControlEventTouchUpInside-Outside不是-ValueChanged(如果您现在正在这样做)。

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

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

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

于 2013-04-14T08:50:10.810 回答
0

找到了答案!

这些家伙帮了我很多忙:检测 UISlider 上的触摸?

精度低:

相关滑块的动作分配给他:

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

方法签名是:

- (IBAction)touchEnded:(id) sender

使用情节提要,在我看来,将动作分配给滑块有点不同。

感谢您的回答!

于 2013-04-14T09:03:39.293 回答
0

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

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

mySlider.continuous= NO;
于 2013-04-14T11:31:42.870 回答