2014-09-18 2 views
1

Я создаю приложение с некоторыми элементами UIBarButton, некоторые из которых будут запускать UIPopoverController при нажатии. Я бы хотел, чтобы это отключило что-либо от возможности быть связанным с ним, что в основном происходит по умолчанию. Однако я заметил, что другие элементы UIBarButtonItems на той же панели инструментов будут активны, пока popover активен. Я пытался добавить:UIPopover не блокирует элементы UIBarbutton от нажатия

[_popOver setPassthroughViews:nil]; 

до показывая его, но UIBarButtonItems все еще в состоянии быть нажата в то время как попы над показана. Я понял, что могу отключить кнопки, но я бы предпочел не делать этого, так как мне пришлось бы вводить все виды ненужного состояния, пока каждый вид всплытия открыт. Есть ли способ удалить всплывающее окно, если что-либо выбрано вне всплывающего окна (включая другие UIBarButtonItems)?

Базового код Репрографических проблем:

- (IBAction)rightButtonPressed:(id)sender { 
    UIViewController *vc = [[UIViewController alloc] init]; 
    _popOver = [[UIPopoverController alloc] initWithContentViewController:vc]; 
    [_popOver setPassthroughViews:nil]; 
    [_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
} 

- (IBAction)leftButtonPressed:(id)sender { 
    NSLog(@"Why am I active while pop-over is visible?"); 
} 

Добавить оба элемент панели кнопок в ту же панель навигации.

ответ

1

Я идиот, понял моменты решения после публикации этого. Кажется, что вызов presentPopoverFromBarButtonItem автоматически добавляет навигационную панель в passthroughviews. С тех пор, как я освобождался раньше, а не после представления UIPopoverView, он возвращался обратно. Проблема заключается в простом изменении порядка вызовов.

- (IBAction)rightButtonPressed:(id)sender { 
    UIViewController *vc = [[UIViewController alloc] init]; 
    _popOver = [[UIPopoverController alloc] initWithContentViewController:vc]; 
    [_popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

    //Call this *AFTER* presenting the popover 
    [_popOver setPassthroughViews:nil]; 
} 
Смежные вопросы