我有自定义滑块,我使用以下触摸事件来响应:
[bSlider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
我发现它很难使用,它在大约50%的时间内都没有响应。与音量播放器相比,音乐播放器每次触摸时效果都很好。在代码中创建滑块是否有任何秘密可以使其更具响应性?
答案 0 :(得分:4)
我的自定义UISlider遇到了同样的问题,并通过使用外部透明的更大的“拇指”图像解决了这个问题。
我的回调函数运行缓慢并导致滑块使用非常迟钝和笨拙,我也遇到了问题,我通过在函数顶部添加一个简单的检查来解决这个问题:
int val = ceil(sliderView.value);
if (val == _lastSliderVal) return;
_lastSliderVal = val;
// .. code to update various display elements based on slider value
更改这两个后,滑块工作得很漂亮。
答案 1 :(得分:1)
问题在于您正在跟踪的事件。 UIControlEventTouchUpInside
表示只有在手指仍处于控件范围内时抬起手指才会调用-start
方法,这在滑块上并不容易。
您可能想要的是UIControlEventTouchUpOutside
和/或UIControlEventTouchDragExit
,当您将手指抬离控制范围或手指被从内部拖出时,它会调用-start
分别控制到其范围之外。
有关详细信息,请参阅UIControl reference。
答案 2 :(得分:0)
好吧,我尝试了几项内容,包括上面的建议,但从未让我的滑块与音乐应用中的iPhone音量滑块一样好用。唯一有帮助的是在按钮图像周围添加清晰的背景以使触摸空间更大。这就产生了一些问题,让按钮一直滑到我从未完全解决的滑块底部和顶部。现在使用OS 3.0似乎工作得更好。