1. ホーム
  2. iphone

[解決済み] iOSの基本的なドラッグ&ドロップ

2023-02-24 11:23:14

質問

ユーザーがドラッグ&ドロップできる車両が走り回るようなビューを持ちたいと考えています。これを行うための最良の大規模戦略は何だと思いますか。車両を表すビューからタッチ イベントを取得するのが最善でしょうか、それともより大きなビューから取得するのが最善でしょうか。ドラッグ&ドロップに使用するシンプルなパラダイムで、満足のいくものはありますか?さまざまな戦略の欠点は何ですか?

どのように解決するのですか?

仮に UIView シーンがあり、背景画像と多くの vehicles として定義することができます。 UIButton (として定義することができます(UIImageViewもおそらく動作するでしょう)。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(imageTouch:withEvent:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[button setImage:[UIImage imageNamed:@"vehicle.png"] forState:UIControlStateNormal];
[self.view addSubview:button];

次に、車両を好きな場所に移動することができます。 UIControlEventTouchDragInside というイベントに応答することで、例えば

- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
    CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
    UIControl *control = sender;
    control.center = point;
}

個々の車両が自分のドラッグを処理するのは、シーン全体を管理するのに比べてずっと簡単です。