我有一个在屏幕上UISlider,我需要能够在用户停止触摸它来检测。 (所以我可以褪色一些元件的距离)。
我已经尝试使用:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
但在滑块结束触摸时,并没有工作。
我有一个在屏幕上UISlider,我需要能够在用户停止触摸它来检测。 (所以我可以褪色一些元件的距离)。
我已经尝试使用:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
但在滑块结束触摸时,并没有工作。
当触摸结束使用两个控制事件可以检测; 尝试
[slider addTarget:self action:@selector(touchEnded:)
forControlEvents:UIControlEventTouchUpInside];
[slider addTarget:self action:@selector(touchEnded:)
forControlEvents:UIControlEventTouchUpOutside];
如果要检测这两种类型的的touchesEnd
情况下,使用
[slider addTarget:self action:@selector(touchEnded:)
forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
而不是使用的touchesEnded:
这不应该被用于此目的无论如何),连接到一个动作UISlider
的UIControlEventValueChanged
事件,并设置continuous
的财产UISlider
到NO
,这样当用户完成选择一个事件将触发值。
mySlider.continuous = NO;
[mySlider addTarget:self
action:@selector(myMethodThatFadesObjects)
forControlEvents:UIControlEventValueChanged];
我无法得到任何同时捕获的开始和触摸结束,但在RTFD-ING,我想出了将两者都做。
@IBAction func sliderAction(_ sender: UISlider, forEvent event: UIEvent) {
if let touchEvent = event.allTouches?.first {
switch touchEvent.phase {
case .began:
print("touches began")
sliderTouchBegan()
case .ended:
print("touches ended")
sliderTouchEnded()
default:
delegate?.sliderValueUpdated(sender.value)
}
}
}
sliderTouchBegan()
和sliderTouchEnded()
仅仅是方法,我写的时候触摸开始,何时结束用于处理动画。 如果它不是一个开始或结束,这是一个default
和滑块值的更新。