2014-11-20 2 views
1

У меня есть LongPressGesture распознавани, который при обнаружении долгого нажатия он представляет новый SEGUE:Обнаружение LongPressGesture закончилась в другой контроллер зрения

if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 

      [self performSegueWithIdentifier:@"showImage" sender:self]; 
} 

Проблема в том, я хочу новый «SEGUE», чтобы обнаружить, что жест закончилась, и вернуться к предыдущему контроллеру вида:

if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { 

    [self presentViewController:friendViewController animated:YES completion:Nil]; 
} 

Я попытался создать новый жест распознавань в новом Segue, но он не обнаружен, если пользователь не заканчивается предыдущий жест.

ответ

2

Вы делаете (или пытаетесь сделать) несколько вещей неправильно. Когда вы перейдете к новому контроллеру, состояние продолжительного состояния распознавателя перейдет в состояние «сбой», поэтому вы больше ничего не сможете с ним поделать. Невозможно добавить распознаватель жестов к представлению нового контроллера, который примет ваш предыдущий штрих как начало его касания, так что это не сработает. Кроме того, если вы хотите вернуться к предыдущему контроллеру, вы не должны использовать presentViewController, который просто создает новый экземпляр friendViewController; он не возвращается к старой.

Я думаю, что вам нужно выполнить свою задачу, а не представлять новый контроллер, но добавить новый вид поверх него с помощью распознавателя жестов. В приведенном ниже примере я просто создаю простой вид для демонстрационных целей, но вы можете создать его в xib, если вам нужно что-то более сложное.

-(IBAction)handleLongPress:(UILongPressGestureRecognizer *)sender { 

    if (sender.state == UIGestureRecognizerStateBegan) { 
     UIView *newView = [[UIView alloc] initWithFrame:self.view.bounds]; 
     newView.backgroundColor = [UIColor redColor]; 
     newView.tag = 10; 
     [self.view addSubview:newView]; 
    } 

    if (sender.state == UIGestureRecognizerStateEnded) { 
     [[self.view viewWithTag:10] removeFromSuperview]; 
    } 
} 
Смежные вопросы