touchesBegan
、 、touchesMoved
で開始しtouchesEnded
ます。UIView サブクラスでこれらをオーバーライドすると、イベント システムを学習することができます。次のようにイベント座標を取得できます。
- (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event
{
float x = [[touches anyObject] locationInView:self].x;
float y = [[touches anyObject] locationInView:self].y;
}
次に、異なるビュー間で座標を変換するためのものがたくさんあります。それを理解したら、UIGestureRecognizer
すでに見つけた必要なものを操作できます。
ドラッグ/ドロップを行うには、パン ジェスチャ レコグナイザが必要です。locationInView:
でセレクターを使用してUIPanGestureRecognizer
、特定の瞬間に自分がどこにいるかを知ることができます。
しようとしていたターゲットアクションのものではなく、次のようにジェスチャレコグナイザーを追加します。
UIPanGestureRecognizer *dragDropRecog = [[UIPanGestureRecognizer alloc] initWithTarget:yourView action:@selector(thingDragged:)];
[yourView addGestureRecognizer:dragDropRecog];
thingDragged:
次に、ビューにセレクターを実装する必要があります。
- (void) thingDragged:(UIPanGestureRecognizer *) gesture
{
CGPoint location = [gesture locationInView:self];
if ([gesture state] == UIGestureRecognizerStateBegan) {
// Drag started
} else if ([gesture state] == UIGestureRecognizerStateChanged) {
// Drag moved
} else if ([gesture state] == UIGestureRecognizerStateEnded) {
// Drag completed
}
}
変更されたビットでドラッグされているビューを翻訳し、終了セクションでドロップを処理します。