2

私のドラッグ可能なボタンは、これらのイベントを使用してドラッグしています:

[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常に実行されていることを確認する方法はありますか?

4

1 に答える 1

1

などtouchesBeganでUIView API を使用する方が簡単かもしれません。touchesEnded

とにかくUIButton機能を使用していないようです。UIButton のターゲット メカニズムでドラッグを管理することは、意図したものではないと思います。

于 2013-04-08T21:11:12.557 に答える