2

Я представляю контроллер popover (с ViewController.modalPresentationStyle = UIModalPresentationPopover;) из действия левой кнопки бара. И в действии на панели справа я запускаю push-сегу. В идеале, когда popover видно, взаимодействие с представлениями позади popover не должно происходить. Но, даже если popover виден, я могу щелкнуть по правой кнопке панели и ее нажатию нового контроллера представления, не отпуская popover.Отключить все взаимодействие при видимости popover

Мой код

- (UIViewController *)menuViewController { 
    if (!_menuViewController) { 
     _menuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"TableViewController"]; 
     _menuViewController.modalPresentationStyle = UIModalPresentationPopover; 
     UIPopoverPresentationController *popoverPresentationController = _menuViewController.popoverPresentationController; 
     popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp; 
    } 
    return _menuViewController; 
} 
- (IBAction)leftAction:(id)sender { 
    self.menuViewController.popoverPresentationController.barButtonItem = sender; 

    [self presentViewController:self.menuViewController animated:YES completion:nil]; 
} 
- (IBAction)rightAction:(id)sender { 
    [self performSegueWithIdentifier:@"PushSegue" sender:nil]; 
    NSLog(@"Crap here"); 
} 

Я попытался установить поповер контроллер представления passthroughViews-х до Нилл и пустой массив, но никакого результата

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

UPDATE:

Это происходит, если поповер видна и у нас есть любое взаимодействие в навигационной панели. Короче говоря, его взаимодействие с навигационной панелью даже при видимости видимости. Есть ли способ отключить это?

ответ

5

Установите passthroughViews на нуль в другом цикле запуска после представления popover. Вы можете сделать это.

self.presentViewController(_menuViewController, animated: true) {() -> Void in 
     dispatch_async(dispatch_get_main_queue()) {() -> Void in 
      popoverPresentationController.passthroughViews = nil; 
     } 
    } 

Для дальнейшего объяснения, проверить это http://karmeye.com/2014/11/20/ios8-popovers-and-passthroughviews/

+0

Отлично, отлично работает! :) – sabiland

Смежные вопросы