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

作者: flamelad (flamelad)   2014-08-10 13:06:43
關於你的問題昨天原本想回信,但因為太晚又考慮到我並不是非常熟悉,所以就沒回
應了。由於你來信詢問,那我會盡我綿薄之力提供建議,不對之處還請多見諒。另外這篇
我就直接回應到版上占用一些版面,讓版友可以指出我不對之處或提供更佳解 :)
※ 引述《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。

Links booklink

Contact Us: admin [ a t ] ucptt.com