У меня проблема с UITapGestureRecognizer в моем представлении коллекции, и я не знаю об ошибке.UITapGestureRecognizer распознается как UILongPressGestureRecognizer
Я хочу сделать пользовательское действие, когда есть длинный пресс жест, и когда есть водопроводная жест я хочу ничего не делать, так что у меня есть эти методы:
- (void)activateSelectionMode:(UILongPressGestureRecognizer *)gr
{
if (![self.collectionView allowsSelection]) {
[self.collectionView setAllowsSelection:YES];
NSLog(@"Seleccion activada");
}
}
- (void)pruebaTap:(UITapGestureRecognizer *)tr
{
NSLog(@"tap");
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint touchPoint = [touch locationInView:self.collectionView];
NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:touchPoint];
if (indexPath != nil && [gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
CVCell *cell = (CVCell *)[self.collectionView cellForItemAtIndexPath:indexPath];
if ([[cell checkImage] isHidden]) {
// TODO: Añadir la celda a la lista de celdas seleccionadas
[[cell checkImage] setHidden:NO];
NSLog(@"Seleccionada celda %@", [[cell titleLabel] text]);
} else {
// TODO: Quitar la celda de la lista de celdas seleccionadas
[[cell checkImage] setHidden:YES];
NSLog(@"No seleccionada celda %@", [[cell titleLabel] text]);
}
NSLog(@"Entra");
return YES;
}
return NO;
}
Если я комментирую последнее метод, каждый метод распознается отлично, но если я не прокомментирую последний метод, жест нажатия будет распознан как длинный жест нажатия. Здесь я назначаю жест коллекционному представлению:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pruebaTap:)];
tap.delegate = self;
[self.collectionView addGestureRecognizer:tap];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(activateSelectionMode:)];
longPress.delegate = self;
[self.collectionView addGestureRecognizer:longPress];
Большое спасибо.
«ЕСЛИ я прокомментирую последний метод, каждый метод распознается отлично, но если я не прокомментирую последний метод» - - что вы подразумеваете под последним методом? –
shouldReceiveTouch – Juanjo