Как отключить UISwipeGestureRecognizer при загрузке нового представления?

на мой взглядDidLoad я установил

UISwipeGestureRecognizer *swipeRecognizerU = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpDetected:)]; swipeRecognizerU.direction = UISwipeGestureRecognizerDirectionUp; [self.view addGestureRecognizer:swipeRecognizerU];

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

// show popup view
-(IBAction)showPopup:(id)sender
{
    MJDetailViewController *detailViewController = [[MJDetailViewController alloc] initWithNibName:@"MJDetailViewController" bundle:nil];
    [self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationSlideBottomBottom];
}

после закрытия всплывающего окна мне нужно вернуть жест смахивания.

// hide popup view
-(IBAction)hidePopup:(id)sender
{
    [self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationSlideBottomBottom];
}

как это можно сделать?


person Pavel Kaljunen    schedule 07.07.2012    source источник


Ответы (2)


Я думаю, что свойство с именем включено для UIGestureRecognizer. Вы пробовали это, все должно быть в порядке, чтобы отключить ваши удары:

swipeGestureRecognizer.enabled = NO;
person Bazinga    schedule 07.07.2012

Здесь вам нужно установить делегата.

Ex :

swipeleft=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeleft:)];
        swipeleft.direction=UISwipeGestureRecognizerDirectionLeft;
        swipeleft.delegate = self;
        [self.view addGestureRecognizer:swipeleft];

Затем добавьте функцию

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {


    if ((touch.view == test[1]) || (touch.view == test[2]) || (touch.view == test[3])) {

        [gestureRecognizer setCancelsTouchesInView:YES];
        [swipeleft setCancelsTouchesInView:YES];

        [gestureRecognizer setEnabled:NO];
        [swipeleft setEnabled:NO];



        return NO;

    }
    else
    {
        [gestureRecognizer setCancelsTouchesInView:NO];
        [swipeleft setCancelsTouchesInView:NO];

        [gestureRecognizer setEnabled:YES];
        [swipeleft setEnabled:YES];

    return YES;
    }
}

Я думаю полезно для вас

person Nhân Nguyễn    schedule 22.05.2014