ウィンドウに2つのUIViewがあります。1つはプレーヤーのスコアを保持するためのもの(サイドバー)、もう1つはメインのプレイエリアです。どちらもUIWindowに収まり、どちらもスクロールしません。ユーザーはメインのプレイエリアでUIButtonをドラッグできますが、現在はサイドバーにドロップできます。一度実行すると、元に戻すために再度ドラッグすることはできません。おそらく、問題のボタンが含まれていない2番目のビューをタップしているためです。
メインビュー内の何かがサイドバービューに移動しないようにしたいと思います。私はこれを管理しましたが、プレーヤーの指がそのビューから離れた場合にドラッグを解放する必要があります。以下のコードでは、ボタンは指で動き続けますが、ビューのX座標を超えません。どうすればこれに取り組むことができますか?ドラッグは、次の呼び出しを使用して有効になります。
[firstButton addTarget: self action: @selector(wasDragged: withEvent:) forControlEvents: UIControlEventTouchDragInside];
この方法に:
- (void) wasDragged: (UIButton *) button withEvent: (UIEvent *) event
{
if (button == firstButton) {
UITouch *touch = [[event touchesForView:button] anyObject];
CGPoint previousLocation = [touch previousLocationInView:button];
CGPoint location = [touch locationInView:button];
CGFloat delta_x = location.x - previousLocation.x;
CGFloat delta_y = location.y - previousLocation.y;
if ((button.center.x + delta_x) < 352)
{
button.center = CGPointMake(button.center.x + delta_x, button.center.y + delta_y);
} else {
button.center = CGPointMake(345, button.center.y + delta_y);
}
}
}