Re: [問題] 請教如何改變UIButton的highlighted狀態?

看板MacDev作者 (flamelad)時間11年前 (2014/08/10 13:06), 11年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
關於你的問題昨天原本想回信,但因為太晚又考慮到我並不是非常熟悉,所以就沒回 應了。由於你來信詢問,那我會盡我綿薄之力提供建議,不對之處還請多見諒。另外這篇 我就直接回應到版上占用一些版面,讓版友可以指出我不對之處或提供更佳解 :) ※ 引述《pistols (我不想上報 別寄信啦)》之銘言: : 請問一下版友 : 我想設置多個UIButton : 譬如我從xcode右下角拉了九個UIButton放到ViewControl : 排列就像電話的按鈕 1 2 3...9這樣九宮格的排列 : 我想設計每個按鈕的state狀態為highlighted時 會產生個別的反應或音效 : 可是忽然發現UIButton的highlighted的特性跟我想的不太一樣 : 譬如當我按住button1時候 就會有highlighted : 但是我手指拖移離開button1 移到button2的範圍內時 : button1的highlighted仍然未消失 button2也沒有出現highlighted 就如上次你詢問時的解答,假如你只是想要click button 後可以得到被點擊後或點住 不放的狀態,那isHighLighted 就可以得到你想要的結果,否則應該使用其他的-(method) 或判斷。(請務必參考isHighLighted 的description) 另外就我所了解的是,當你手指未離開屏幕而移動,整體來說只會是某個 Object 的 a series of events,包括Inside, Outside, DragExit等,而不是手指從button1 拖曳到 button2 就會trigger button2 的event。 : 想請問版友 : 我如果想讓每一個button只要是手指有接觸到該按鈕的範圍內就會有highlighted反應 : 而一離開或是拖移超出範圍馬上就不會有highlighted : 我該如何設置呢? 這並不難,請參考UIButton繼承的UIControl中的一些method,主要是需要改變按下 button的default UIControlEvent。 : 譬如像上面說的例子 : 當我手指離開button1範圍 移到button2範圍的時候 : 如何讓button1的highlighted馬上消失 而變成button2的highlighted跑出來 這例子若是手指並不離開屏幕,則與上一段你所希望的並不相同,請見第一段的解釋 。若你想有手指不離開屏幕而觸發多個 Objects,應該使用Gesture Recognizer或是版友 所提到的UITouch中的-(method)。 : 是要拉每個按鈕的IBOutlet到interface底下 增加什麼判定的屬性嗎? : 我是有試過拉IBAction 然後用touch drag outside或是drag inside等等 : 但都不會跑出我所說的那樣 : 而且 我的功能是用按鈕的state去做反應的 : 希望版友可幫忙解答一下 : 非常感謝! 請參考UIControl。另外若有拉IBAction,每當你觸發了版面上的某個Object event時 ,則IBAction中常見的sender就是被觸發Object的instance,你可以借由這個sender去改 變行為。 以上,大致上是我的理解,希望有幫助:) Edit: 最後一段有些謬誤的地方,不好意思,趕吃飯:p 謬誤: 1. 在button中的sender並不該是改變event,而是增減一些event才對。 2. 若是要修改該button的event,一般也不會在該button中實現,而是如你 所說,另外declare一個IBOutlet,然後去增加該button的event。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.230.109.84 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1407647206.A.BD3.html ※ 編輯: flamelad (122.118.7.176), 08/10/2014 13:43:38
文章代碼(AID): #1JvltclJ (MacDev)
文章代碼(AID): #1JvltclJ (MacDev)