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

作者: pistols (我不想上報 別寄信啦)   2014-08-10 17:03:14
※ 引述《flamelad (flamelad)》之銘言:
: 關於你的問題昨天原本想回信,但因為太晚又考慮到我並不是非常熟悉,所以就沒回
: 應了。由於你來信詢問,那我會盡我綿薄之力提供建議,不對之處還請多見諒。另外這篇
: 我就直接回應到版上占用一些版面,讓版友可以指出我不對之處或提供更佳解 :)
: ※ 引述《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。
我把我描述的狀況貼影片可能清楚些 https://www.youtube.com/watch?v=TzPk4_hKozs
如影片那樣 我按第一個按鈕之後移到其他按鈕 (手指移動過程都沒離開螢幕)
就只有第一個按鈕有反應 移動到其他按鈕都沒反應
而且在我手沒離開螢幕前都只是對第一個按鈕控制而已
我希望每個按鈕在我移到他門位置上時候會亮起來
並且在離開的時候就會關閉(不會有離開的時候仍然亮的情形)
: : 想請問版友
: : 我如果想讓每一個button只要是手指有接觸到該按鈕的範圍內就會有highlighted反應
: : 而一離開或是拖移超出範圍馬上就不會有highlighted
: : 我該如何設置呢?
: 這並不難,請參考UIButton繼承的UIControl中的一些method,主要是需要改變按下
: button的default UIControlEvent。
: : 譬如像上面說的例子
: : 當我手指離開button1範圍 移到button2範圍的時候
: : 如何讓button1的highlighted馬上消失 而變成button2的highlighted跑出來
: 這例子若是手指並不離開屏幕,則與上一段你所希望的並不相同,請見第一段的解釋
: 。若你想有手指不離開屏幕而觸發多個 Objects,應該使用Gesture Recognizer或是版友
: 所提到的UITouch中的-(method)。
請問這是指我不用拉那5個UIButton 而是拉5個UIView取代原本Button位置
再各自拉Gesture Recognizer進去嗎?
: : 是要拉每個按鈕的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。
哈 我是剛接觸寫程式的新生
很多問題都是實機模擬之後 才覺得哪邊怪怪的
晚上有空我再練習看看 謝謝版友們回覆!
作者: flamelad (flamelad)   2014-08-10 17:15:00
Gesture Recognizer是個solution, darktt版友已經給出很詳細的做法,我相信你先去了解Gesture Recognizer後,就能融會貫通了。另外稍微解釋一下,Gesture Recognizer也
作者: charlesdc (MoOn)   2014-08-10 17:58:00
建議先去了解觸控事件傳遞的規則 你就會知道要從哪下手
作者: pistols (我不想上報 別寄信啦)   2014-08-10 22:08:00
感謝!!這幾天我再研究一下手勢的功能

Links booklink

Contact Us: admin [ a t ] ucptt.com