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