关于你的问题昨天原本想回信,但因为太晚又考虑到我并不是非常熟悉,所以就没回
应了。由于你来信询问,那我会尽我绵薄之力提供建议,不对之处还请多见谅。另外这篇
我就直接回应到版上占用一些版面,让版友可以指出我不对之处或提供更佳解 :)
※ 引述《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。