我有我用下面的触摸事件作出回应定制滑块:iPhone滑块灵敏度
[bSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
我觉得很难用,它并没有触摸响应时间大约50%。与音乐播放器的音量滑块相比,每当您触摸它时,效果都很棒。是否有任何秘密来创建代码中的滑块,使其更具响应性?
我有我用下面的触摸事件作出回应定制滑块:iPhone滑块灵敏度
[bSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
我觉得很难用,它并没有触摸响应时间大约50%。与音乐播放器的音量滑块相比,每当您触摸它时,效果都很棒。是否有任何秘密来创建代码中的滑块,使其更具响应性?
那么我尝试了几件事情,包括上面的建议,但从来没有让我的滑块工作,以及音乐应用程序中的iPhone音量滑块。唯一帮助的是在按钮图像周围添加一个清晰的背景,以增大触摸空间。这就造成了问题,让按钮一直滑动到我从未完全解决的滑块的底部和顶部。现在OS 3.0似乎工作得更好。
问题是您正在跟踪的事件。 UIControlEventTouchUpInside
意味着如果在手指仍处于控件边界时向上抬起手指,则只会调用-start
方法,这在滑块上不容易实现。
你可能想要的是UIControlEventTouchUpOutside
和/或UIControlEventTouchDragExit
,它将调用-start
或者当您松开手指控制的范围之外,或者当你的手指从控制中拖动到其边界以外的分别。
查看UIControl reference了解更多信息。
我与我的自定义UISlider有同样的问题,并通过在外部使用透明度较大的“拇指”图像来解决此问题。
我也有我的回调函数运行缓慢,造成滑块是非常laggy和笨拙通过在函数的顶部添加一个简单的检查使用,这是我固定的问题:
int val = ceil(sliderView.value);
if (val == _lastSliderVal) return;
_lastSliderVal = val;
// .. code to update various display elements based on slider value
后改变这两个,滑块运作良好。
感谢您的反馈,但我发布我第一次复制了错误的行。我修复了它,并使用UIControlEventValueChanged。 – Aaron 2009-05-29 22:32:57