лист двух действий, появляющийся при длительном нажатии - PullRequest
0 голосов
/ 13 октября 2011

Внутри моего viewDidLoad у меня есть следующее:

UILongPressGestureRecognizer *longpressGesture =[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongpressGesture:)];
longpressGesture.minimumPressDuration = 1;
longpressGesture.allowableMovement = 5;
longpressGesture.numberOfTouchesRequired = 1;
[self.tableView addGestureRecognizer:longpressGesture];
[longpressGesture release];

Я создал следующее:

-(IBAction) handleLongpressGesture:(UIGestureRecognizer *) sender {

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Delete Record?" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Yes",@"No",nil];
    [actionSheet showInView:self.view];
    [actionSheet release];
}

При использовании симулятора, когда я долго жму, вместо этого отображаются два листа действийодного.

Есть идеи, почему это так?
Это проблема с симулятором?

1 Ответ

2 голосов
/ 13 октября 2011

Это не проблема с симулятором.

Обработчик жестов вызывается несколько раз, когда жест проходит через различные состояния (начало, конец и т. Д.).

Необходимо проверить значение state в методе обработчика:

-(IBAction) handleLongpressGesture:(UIGestureRecognizer *) sender {
    if (sender.state == UIGestureRecognizerStateBegan)
    {
        UIActionSheet *actionSheet = [[UIActionSheet alloc] init...
        [actionSheet showInView:self.view];
        [actionSheet release];
    }
}
...