Как отключить основную панель инструментов при отображении всплывающего окна с помощью modalInPopover? - PullRequest
6 голосов
/ 13 июля 2011

Я отображаю всплывающее окно с контроллером представления, имеющим установленное свойство modalInView.Прежде чем продолжить, мне нужно, чтобы пользователь ввел ответ.

Хотя это отключает большинство элементов управления моего пользовательского интерфейса, оно отключает кнопки панели инструментов в главном приложении.Я не хочу, чтобы пользователь взаимодействовал с приложением, прежде чем выбрать элемент во всплывающем окне и закрыть его.

Я что-то упустил здесь - то есть, что отключило бы панель инструментов по умолчанию?Почему он остается активным?Существуют ли какие-то рекомендации по пользовательскому интерфейсу, которые требуют этого?

Стоит ли просто установить панель инструментов, чтобы запретить взаимодействие с пользователем, или это беспорядок?

Ответы [ 3 ]

6 голосов
/ 19 июля 2013

Похоже, что iOS добавляет панель как «сквозное представление» для всплывающего окна, когда вы представляете его из UIBarButtonItem.

Просто установите в nil passthroughViews свойство UIPopoverController после его представления, как показано ниже:

[self.myPopover presentPopoverFromBarButtonItem:some_item permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
dispatch_async(dispatch_get_main_queue(), ^{ self.myPopover.passthroughViews = nil; });
2 голосов
/ 05 ноября 2014

Вместо этого используйте -[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated], что по умолчанию не позволяет взаимодействовать с панелью инструментов. Например, при представлении из UIBarButtonItem с установленным свойством customView:

[barButtonItem presentPopoverFromRect:barButtonItem.customView.bounds inView:barButtonItem.customView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];`
1 голос
/ 01 сентября 2012

Что мне показалось лучшим, это то, что вы упоминаете как возможность в своем вопросе:

-(void)showMyPopover
{
    ....
    self.myToolBar.userInteractionEnabled=NO;
    [self.myPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    self.myToolBar.userInteractionEnabled=YES;
    ...
}
...