我的可拖动按钮正在使用这些事件进行拖动:
[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
始终运行?
答案 0 :(得分:1)
使用带有touchesBegan
,touchesEnded
等的UIView API可能会更容易。
似乎你无论如何都没有使用UIButton功能。我认为使用UIButton的目标机制管理拖拽不是它的目的。