2013-04-08 81 views
2

我拖动按钮使用被拖进这些事件:如何更好地拖动UIButton? UIButton的UIControlEventTouchUpInside事件不叫

[button addTarget:self action:@selector(beganDragging:) 
        forControlEvents:UIControlEventTouchDown]; 
[button addTarget:self action:@selector(wasDragged:withEvent:) 
        forControlEvents:UIControlEventTouchDragOutside | UIControlEventTouchDragInside]; 
[button addTarget:self action:@selector(exitDragging:) 
        forControlEvents:UIControlEventTouchUpInside]; 

这是直截了当以上。方法wasDragged将UIButton的中心调整到UITouch位置。但是,有些情况下我最终会挂起按钮(通常在手指释放后它会对齐网格),因为UIControlEventTouchUpInside从不会被调用!

怎么样?比方说,我开始拖动一个按钮,并按住它,我做了一个截图(Power + Home)。当我释放按钮时,没有任何事件被调用(即UIControlEventTouchUpInside)。因此,我的按钮被卡住,而不是捕捉到网格,这是在方法exitDragging

任何光如何确保exitDragging总是运行?

回答

1

也许更容易使用的UIView的API与touchesBegantouchesEnded

看来你是无论如何不使用的UIButton功能。我认为用UIButton的目标机制管理拖拽并不是它的目的。