我是iOS的新手,我想知道如何让我的滑块在触摸结束时做出仅的反应。 我用这个方法搞清楚了:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
但我无法使其发挥作用。
有没有人可以用简单的方式帮助我清楚的例子?
请以编程方式回答,我不使用storyBoard。
提前致谢!!!
答案 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;