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

看板MacDev作者 (我不想上報 別寄信啦)時間11年前 (2014/08/10 17:03), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串4/4 (看更多)
※ 引述《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。 哈 我是剛接觸寫程式的新生 很多問題都是實機模擬之後 才覺得哪邊怪怪的 晚上有空我再練習看看 謝謝版友們回覆! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.240.53 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1407661397.A.B15.html

08/10 17:15, , 1F
Gesture Recognizer是個solution, darktt版友已經給出很
08/10 17:15, 1F

08/10 17:16, , 2F
詳細的做法,我相信你先去了解Gesture Recognizer後,就
08/10 17:16, 2F

08/10 17:17, , 3F
能融會貫通了。另外稍微解釋一下,Gesture Recognizer也
08/10 17:17, 3F

08/10 17:19, , 4F
是個object,就如我第一段所說,所以應該是Gesture
08/10 17:19, 4F

08/10 17:19, , 5F
Recognizer拉一個就行了,然後使用這個Object去處理你要
08/10 17:19, 5F

08/10 17:19, , 6F
的功能
08/10 17:19, 6F

08/10 17:58, , 7F
建議先去了解觸控事件傳遞的規則 你就會知道要從哪下手
08/10 17:58, 7F

08/10 22:08, , 8F
感謝!!這幾天我再研究一下手勢的功能
08/10 22:08, 8F
文章代碼(AID): #1JvpLLiL (MacDev)
文章代碼(AID): #1JvpLLiL (MacDev)