win*_*ith 45 cocoa-touch objective-c ios
在我的应用程序中,我有几个UISlider实例来更改各种值.这些值显示在滑块旁边,并在应用程序的另一个可见部分的3d空间中呈现.
3d部分包含一些相当繁重的计算,现在,当滑块更改时,它似乎无法实时更新.这意味着我必须将滑块的continuous
属性设置为NO
,因此只有在滑块完成更改时才会获得更新.
不过,我更愿意让显示值更新.有没有办法让一个连续的滑块(所以我可以实时更新我的价值标签),并在用户完成与之交互后仍然发送某种消息?我现在的直觉是继承UISlider并覆盖该touchesEnded:
方法.这可行吗?
Jas*_*ien 76
您可以使用简单的目标/操作执行此操作.
为UIControlEventValueChanged
事件设置目标和操作,然后为事件设置另一个目标和操作UIControlEventTouchUpInside
.将continuous
属性设置为YES
,值更改事件将在滑块更改值时触发,而内部触摸事件将仅在用户释放控件时触发.
Ste*_*n J 16
我只需要这样做,所以我查找触摸属性,并使用完整的IBAction标头.
对于想要一些额外控制的人来说,这应该是一个可行的选择,尽管Jas在代码方面肯定更容易.
- (IBAction)itemSlider:(UISlider *)itemSlider withEvent:(UIEvent*)e;
{
UITouch * touch = [e.allTouches anyObject];
if( touch.phase != UITouchPhaseMoved && touch.phase != UITouchPhaseBegan)
{
//The user hasn't ended using the slider yet.
}
}
Run Code Online (Sandbox Code Playgroud)
:d
在Swift 3中:
@IBAction func sliderValueChanged(_ slider: UISlider, _ event: UIEvent) {
guard let touch = event.allTouches?.first, touch.phase != .ended else {
// ended
return
}
// not ended yet
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20263 次 |
最近记录: |