And*_*tin 12 xcode cocoa-touch objective-c uislider ios
我在屏幕上有一个UISlider,我需要能够检测到用户何时停止触摸它.(所以我可以淡化一些元素).
我尝试过使用:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
但是当结束滑块上的触摸时,这不起作用.
小智 19
您可以使用两个控制事件检测触摸何时结束; 尝试
[slider addTarget:self action:@selector(touchEnded:)
forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
[slider addTarget:self action:@selector(touchEnded:)
forControlEvents:UIControlEventTouchUpOutside];
Run Code Online (Sandbox Code Playgroud)
如果要检测两种类型的touchesEnd事件,请使用
[slider addTarget:self action:@selector(touchEnded:)
forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
Run Code Online (Sandbox Code Playgroud)
而不是使用的touchesEnded:(这不应该反正用于此目的),连接到一个动作UISlider的UIControlEventValueChanged情况下,设置continuous的属性UISlider来NO,所以当用户完成选择一个值时就会触发.
mySlider.continuous = NO;
[mySlider addTarget:self
action:@selector(myMethodThatFadesObjects)
forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
我无法获得任何东西来捕获触摸的开始和结束,但在 RTFD 处理后,我想出了一些可以同时捕获触摸的开始和结束的东西。
@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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
sliderTouchBegan()和sliderTouchEnded()只是我编写的方法,用于在触摸开始和结束时处理动画。如果不是开始或结束,则为 a,default并且滑块值会更新。
| 归档时间: |
|
| 查看次数: |
9039 次 |
| 最近记录: |