[iOS] UIButton的狀態變化

最近在改一些東西,跟UIButton的state有關,剛好作個筆記。
以下的列表,表示我點擊的順序,以及被呼叫的方法和帶入的變數,粗體字的部分代表是我所執行的指令帶來的結果。

點擊狀態 setSelected: setHighlight:
不點擊 X X
按著 X O(=YES)
放開(設定selected) O(=YES) X
放開(設定selected) X O(=NO)
再次點擊 X O(=YES)
放開(設定selected) O(=NO) X
放開(設定selected) X O(=NO)

因為我設定按鈕的狀態為selected,所以中間多了一個呼叫setSelected:的步驟,不然應該是會直接再次呼叫setHighlight:並且將highlight狀態設定為NO。如果我並不將按鈕設定成selected,那麼按鈕只會呼叫setHighlight:而已,並不會呼叫setSelected:,由此可知按鈕的邏輯,它事實上只有在default和highlight之間做切換而已。

但即使你想將點選的狀態處理在highlight裡面而已,也不是一個好主意,因為那畢竟只是代表著點擊的過渡狀態,當你手動設定setHighlight:為YES時,他其實會再一次呼叫setHighlight:並設定其為NO,所以你還是得把點選的固著狀態實作在setSelected:裡面。

留言