Отключение контроллера формы модального представления при внешнем касании

Я представляю контроллер модального представления в виде листа формы и закрываю его, когда нажимается кнопка отмены, которая является элементом кнопки панели. Мне нужно, чтобы она отменялась при нажатии вне этого представления. Пожалуйста, помогите мне со ссылкой. Примечание: мой контроллер модального представления представлен контроллером навигации.

@cli_hlt, @Bill Brasky спасибо за ответ. Мне нужно отключить его, когда нажатие происходит вне модального представления, которое является листом формы. Я вставляю свой код ниже.

-(void)gridView:(AQGridView *)gridView didSelectItemAtIndex:(NSUInteger)index  
{        
    if(adminMode) 
    {
        CHEditEmployeeViewController *editVC = [[CHEditEmployeeViewController alloc] initWithNibName:@"CHEditEmployeeViewController" bundle:nil];
        editVC.delegate = self;
        editVC.pickedEmployee = employee;
        editVC.edit = TRUE;
        editVC.delegate = self;
        UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:editVC];
        navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
        [self presentModalViewController:navigationController animated:YES];

        return;
    }   //the above code is from the view controller which presents the modal     view. Please look at the below code too which is from my modal view controller. Please guide me in a proper way.   -(void)tapGestureRecognizer {

    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];
    [recognizer setNumberOfTapsRequired:1];
    recognizer.cancelsTouchesInView = NO; //So the user can still interact with controls in the modal view
    [self.view addGestureRecognizer:recognizer];

}

- (void)handleTapBehind:(UITapGestureRecognizer *)sender
{
    if (sender.state == UIGestureRecognizerStateEnded) 
    {
        CGPoint location = [sender locationInView:nil]; //Passing nil gives us coordinates in the window

    //Then we convert the tap's location into the local view's coordinate system, and test to see if it's in or outside. If outside, dismiss the view.

        if (![self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]) 
        {
            [self dismissModalViewControllerAnimated:YES];
            [self.view.window removeGestureRecognizer:sender];
        }

    }
}
32
задан P.J.Radadiya 5 March 2016 в 10:07
поделиться

1 ответ

К вашему сведению, на листах формы iOS 13 теперь имеют стандарт, отклоняют жест - они уходят, когда Вы затрагиваете где угодно в модальном и сильно ударяете, он вниз (установите новое isModalInPresentation свойство к false, если Вы хотите предотвратить это).

0
ответ дан 27 November 2019 в 19:38
поделиться