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

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

Но уберите всплывающее окно, когда я нажму в другом месте. Также проблема не в том, когда мы показываем всплывающее окно, используя - "presentPopoverFromRect: inView:" - странно?.

Поскольку мы не получаем кадр из UIBarButtonItem, как я могу правильно показать всплывающее окно из barbutton.

Благодарность,


person Naveen Shan    schedule 05.04.2013    source источник


Ответы (2)


Отвечая на мой собственный вопрос, чтобы помочь кому-то,

// Presenting from BarButton will not dismiss popover when we click on other bar button.
// [self.popoverController presentPopoverFromBarButtonItem:self.barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

NSMutableArray* buttons = [[NSMutableArray alloc] init];
for (UIView *subview in self.navigationController.navigationBar.subviews) {
    if ([subview isKindOfClass:[UIControl class]])   {
        [buttons addObject:subview];
    }
}

UIView *view = [buttons objectAtIndex:1]; // The '1' is the index to your bar item in the array of .items

CGRect barButtonFrame = [self.navigationController.navigationBar convertRect:view.frame toView:self.navigationController.view];
[self.popoverController presentPopoverFromRect:barButtonFrame inView:self.navigationController.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

То, что я сделал выше, это найти рамку кнопки панели и показать всплывающее окно «presentPopoverFromRect».

person Naveen Shan    schedule 15.04.2013

Я не знаю, использовали ли вы nib или xib в контроллере popover или нет, но давайте попробуем код ниже

 if (_Popover != nil) {
        [_Popover dismissPopoverAnimated:YES];
    }
    else {
        [_Popover dismissPopoverAnimated:NO];
    }
person dhaya    schedule 05.04.2013
comment
Но в моем случае есть 5 кнопок, каждая из которых использует другой экземпляр всплывающего окна. Теперь я исправил это решение. Но почему эти два метода представления ведут себя по-разному. - person Naveen Shan; 05.04.2013