我希望我的 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;
}
}