iPad のミキシング コンソール アプリで、実際と同じように、ユーザーが複数の指でスライダーに触れたときに複数のスライダーを同時に動かせるようにしたいと考えています。
単一のパン ジェスチャ (UIPanGestureRecognizer) のロジックを既に実装しています。この場合、マルチタッチ機能を追加するにはどうすればよいですか?
iOS 5.1 との互換性が必要です。
編集:参考までに、実際のミキシング コンソールでのジェスチャーは次のようになります。
iPad のミキシング コンソール アプリで、実際と同じように、ユーザーが複数の指でスライダーに触れたときに複数のスライダーを同時に動かせるようにしたいと考えています。
単一のパン ジェスチャ (UIPanGestureRecognizer) のロジックを既に実装しています。この場合、マルチタッチ機能を追加するにはどうすればよいですか?
iOS 5.1 との互換性が必要です。
編集:参考までに、実際のミキシング コンソールでのジェスチャーは次のようになります。
コレクション アウトレットがあると仮定すると、スライダーごとに個別のジェスチャ レコグナイザーを作成できます。
- (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;
}
}