我想从UIButton获得双重功能。
当用户按下按钮时,我希望它立即触发行为A
但是,如果用户在释放按钮之前将手指拖出按钮,我也希望在释放按钮时触发行为B。
所以,
[presetButton addTarget: self
action: @selector( presetButtonHit: )
forControlEvents: UIControlEventTouchDown ];
[presetButton addTarget: self
action: @selector( presetButtonSwipe: )
forControlEvents: UIControlEventTouchUpOutside ]; 作为测试用例,我将简单地从相应的操作方法中记录'A‘或'B’。
A总是被正确命中。
然而,B是零星的。我可以有条不紊地按下手指,拖到按钮外面,等待一秒钟,然后松开。而且它通常不会发射。或者,如果我做一个快速的轻击,它更有可能触发。但还是各占一半。
我只有一个带有背景图片和六个按钮的UIView。
我能做些什么来追踪这个人呢?
我宁愿追根溯源,也不愿手忙脚乱地上下跟踪触球;但如果我必须这样做,有没有什么干净的方法?从我所看到的,这将是一个皇家皮塔,我将不得不弄清楚在我的按钮的向上/向下触摸被点击之前,向上/向下触摸是否被击中,设置旗帜,等等。
发布于 2011-07-22 00:32:42
这是Strange UIButton behavior: Is that normal?的副本,但我建议保留它,因为问题标题写得很好。
当我的手指按在按钮上时,图像变暗了
当我把手指拖开时,当我经过一个看不见的圆周超过按钮边框一厘米时,图像就会恢复到原来的颜色
这是“在释放之前将手指移动到足够远的位置来取消触摸”的典型行为。
如果你在这个区域内松开手指,它就会触发里面的触控。外面的SIM卡。
看起来苹果没有料到会有人使用这些方法从UIButton获得双重功能。
现在,有没有什么简单的方法可以从动作中捕捉XY触控坐标。该操作只接收被按下的按钮的ID。
但这里有一种优雅的方式:
http://sree.cc/iphone/handling-touche-events-for-uibuttons-in-iphone
UIControl具有检测拖动开始/移动/停止的方法。您可以覆盖这些设置并获取屏幕坐标。
https://stackoverflow.com/questions/6779516
复制相似问题