我有我用下面的觸摸事件作出迴應定製滑塊: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