3

iPad のミキシング コンソール アプリで、実際と同じように、ユーザーが複数の指でスライダーに触れたときに複数のスライダーを同時に動かせるようにしたいと考えています。

単一のパン ジェスチャ (UIPanGestureRecognizer) のロジックを既に実装しています。この場合、マルチタッチ機能を追加するにはどうすればよいですか?

iOS 5.1 との互換性が必要です。

編集:参考までに、実際のミキシング コンソールでのジェスチャーは次のようになります。

ここに画像の説明を入力

4

1 に答える 1

5

コレクション アウトレットがあると仮定すると、スライダーごとに個別のジェスチャ レコグナイザーを作成できます。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.sliders enumerateObjectsUsingBlock:^(UIView *slider, NSUInteger idx, BOOL *stop) {
        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
        [slider addGestureRecognizer:pan];
    }];
}

次に、ジェスチャ認識エンジンはそれぞれを個別に処理します (驚くべきことに、 で同時に認識する必要はありませんshouldRecognizeSimultaneouslyWithGestureRecognizer)。

- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
    CGPoint translation = [gesture translationInView:gesture.view];

    gesture.view.transform = CGAffineTransformMakeTranslation(0.0, translation.y);

    if (gesture.state == UIGestureRecognizerStateEnded)
    {
        CGRect frame = gesture.view.frame;
        frame.origin.y += translation.y;
        gesture.view.frame = frame;
        gesture.view.transform = CGAffineTransformIdentity;
    }
}
于 2013-08-10T17:45:19.057 に答える