私のドラッグ可能なボタンは、これらのイベントを使用してドラッグしています:
[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
常に実行されていることを確認する方法はありますか?