2014-02-05 26 views
0

我有一個放置在UITableViewCell的contentView中的UIButton的子類。我遇到的問題是當按下按鈕並滾動表格(快速)時,按鈕的setHighlighted:方法被調用三次,全部以YES作爲參數。當桌子滾動時,按鈕從不會變爲低亮顯示(所以當我完成滾動時,我的一個按鈕看起來像是被按下了,但屏幕上沒有任何手指)。如果我按下按鈕,等待一秒鐘,然後滾動表格不滾動,並且該按鈕被正確取消高亮顯示(當觸摸事件退出按鈕的框架時)。UITableViewCell中的UIButton setHighlighted在表滾動上沒有更新

我已經試過了的tableView設置爲

self.tableView.canCancelContentTouches = NO; 
self.tableView.delaysContentTouches = NO; 

但是,這並不能幫助(和設置delaysContentTouches = NO實際上使表中的非滾動)。我沒有嘗試過的新UITableViewCellScrollView設置這些,因爲這是私人的,我不想爲if IOS7, else添加新的代碼...

setHighlighted:調用來自UIControl touchesBegan:UIControl touchesMovedUIControl touchesEnded:。我從來沒有從UIControl touchesCancelled:得到任何東西,這是我希望當tableView接管控件的滾動觸摸事件。

如果有人認爲我做錯了什麼,我可以添加代碼,但這似乎更像是一個概念問題。

爲什麼我沒有從UIControl touchesCancelled:得到setHighlighted:NO

我還沒有嘗試過使用非子類UIButton和setImage:forState:,因爲我突出顯示的狀態只是漸變,我不想爲它們創建UIImage。但我可以,如果我必須。

回答

1

這可能不是正確的處理方法,但由於沒有人提供任何其他解決方案,我只是找到了一種方法來解決我遇到的問題。由於默認touchesCancelled顯然不會發送setHighlight:NO消息到我的按鈕sublcass,我超載了我的UIButton子類中的touchesCancelled函數,並調用[self setHighlighted:NO]。這似乎解決了表格滾動時按鈕保持突出顯示的問題。

以防萬一以後有人遇到這個問題。

相關問題