我是 iOS 新手,我想知道如何让我的滑块仅在触摸结束时做出反应。我用以下方法解决了这个问题:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
但我不能让它工作。
有谁可以帮助我简单明了的例子?
请以编程方式回答,我不使用故事板。
提前致谢!!!
您可以添加手势识别器:
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];
您可以连接UIControlEventTouchUpInside
而-Outside
不是-ValueChanged
(如果您现在正在这样做)。
编辑:或者,我会说更优雅一点,使用UIControlEventValueChanged
,但也将事件作为参数提供给您的方法:
[self.slider addTarget:self action:@selector(handleValueChanged:withEvent:) forControlEvents:UIControlEventValueChanged];
然后检查触摸的相位,看它是否处于ended
状态。
找到了答案!
这些家伙帮了我很多忙:检测 UISlider 上的触摸?
精度低:
相关滑块的动作分配给他:
[self.slider addTarget:self action:@selector(touchEnded:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
方法签名是:
- (IBAction)touchEnded:(id) sender
使用情节提要,在我看来,将动作分配给滑块有点不同。
感谢您的回答!
您必须将属性设置为连续。
包含一个布尔值,指示滑块值的变化是否会生成连续更新事件。
mySlider.continuous= NO;