Это возможно и легко! Это связано с тем, что вы являетесь делегатом вашего распознавателя жестов. Кажется, что-то, что никто не знает. На мой взгляд контроллера подкласса Я предрек и в соответствии с протоколом <UIGestureRecognizerDelegate>
и два Ивар:
UIPinchGestureRecognizer *myPinchGR;
UIPanGestureRecognizer *myPanGR;
Эти Ивар инстанцируются ввиду сделал нагрузки. Обратите внимание на настройку self как делегата.
-(void)viewDidLoad{
[super viewDidLoad];
myPanGR = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTarget:)];
myPanGR.delegate = self;
[self.view addGestureRecognizer:myPanGR];
myPinchGR = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchTarget:)];
myPinchGR.delegate = self;
[self.view addGestureRecognizer:myPinchGR];
}
Один из делегатов вызовов, сделанных UIGestureRecognizer
является shouldRecognizeSimultaneouslyWithGestureRecognizer:
, если у меня было больше, чем два жеста распознования то эта функция должна была бы содержать некоторую логику. Но, поскольку есть только два, я могу просто вернуть YES
.
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
Теперь вы должны включить немного (очень мало) дополнительную логику в своих методах действий на экран для соответствующих условий.
-(void)panTarget:(UIPanGestureRecognizer *)panGR{
if (panGR.numberOfTouches > 1) return;
NSLog(@"panny");
}
-(void)pinchTarget:(UIPinchGestureRecognizer *)pinchGR{
if (pinchGR.numberOfTouches < 2) return;
NSLog(@"pinchy");
}
Запустить этот код, посмотреть журналы. вы увидите, когда вы переместите один палец, вы увидите «паню», когда вы поместите второй палец вниз, вы увидите «щепотку», и вперед и назад.