UIGestureRecognizer et UITableViewCell problème

Je joins une UISwipeGestureRecognizer à un UITableViewCell dans le cellForRowAtIndexPath: méthode comme suit:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
        gesture.direction = UISwipeGestureRecognizerDirectionRight;
        [cell.contentView addGestureRecognizer:gesture];
        [gesture release];
    }
    return cell;
}

Cependant, la didSwipe méthode est toujours appelé deux fois sur le succès de balayage. J'ai d'abord pensé que c'était parce que le geste commence et se termine, mais si je me déconnecte, le gestureRecognizer lui-même, ils sont tous les deux dans le "Fini" de l'état:

-(void)didSwipe:(UIGestureRecognizer *)gestureRecognizer {

    NSLog(@"did swipe called %@", gestureRecognizer);
}

Console:

2011-01-05 12:57:43.478 App[20752:207] did swipe called <UISwipeGestureRecognizer: 0x5982fa0; state = Ended; view = <UITableViewCellContentView 0x5982c30>; target= <(action=didSwipe:, target=<RootViewController 0x5e3e080>)>; direction = right>
2011-01-05 12:57:43.480 App[20752:207] did swipe called <UISwipeGestureRecognizer: 0x5982fa0; state = Ended; view = <UITableViewCellContentView 0x5982c30>; target= <(action=didSwipe:, target=<RootViewController 0x5e3e080>)>; direction = right>

Vraiment, je ne sais pas vraiment pourquoi. J'ai essayé évidemment vérifier le Clos de l'état, mais qui n'est d'aucune aide, car ils viennent en "Terminé" de toute façon... des idées?

InformationsquelleAutor mootymoots | 2011-01-05