2013-05-21 3 views
0

Мое приложение имеет ежемесячный вид и для каждого дня месяца, при длительном нажатии, отображается popover.Предотвращение одновременного отображения нескольких UIPopover

Я использовал self.view setExclusiveTouch:YES, чтобы предотвратить появление более чем одного popover, но это все же иногда позволяет несколько popovers.

Как я могу предотвратить одновременное отображение более одного UIPopover?

Благодаря

ответ

3

Прежде всего объявите свойство типа UIPopoverController (скажем, activePopover).

В методе, который вызывается долгим нажатием сделать это:

if (self.activePopover != nil) 
{ 
    if (self.activePopover.popoverVisible) 
     [ self.activePopover dismissPopoverAnimated:YES]; 
    self.activePopover = nil; 
} 

И тогда, когда вы выделить UIPopoverController на длительное нажатие назначить его activePopover. Таким образом, вы всегда увольняете видимый popover и только затем представляете новый.

+0

Спасибо. Был лучший способ в конце. Я сделал несколько глупых ошибок, которые бросили меня с трека –

0

Вы можете отключить любые взаимодействия вне пирога, установив его свойство passthroughViews в пустой массив после его презентации.

+0

Спасибо. Я думаю, что это сработало бы, но я сделал некоторые ошибки и запутался. В конце концов, это не было подходящим для структуры классов, я имел –

0

Как насчет глобального булевского флага?

Создайте его как свойство в глобальном классе или в ViewController и проверить его перед открытием любого всплывающего окна

Init это с FALSE значения и когда вы собираетесь открыть всплывающее окно просто проверить его значение:

//In the method that handle the long press to open the popup 
if(!self.popUpPresent) 
{ 
    //open the pop up 
    [self openNewPopUp]; 
    //put the flag 
    self.popUpPresent = TRUE; 
} 
else 
//There is a popup opened, do another stuff or nothing. 

Не забудьте снова сбросить его значение до FALSE каждый раз, когда вы закрываете popUp.

Надеюсь, это поможет

+0

Отличная идея. Я пробовал это, но почему-то я все еще получаю больше, чем один popover, отображаемый сразу! –

+0

Где/Как вы храните этот флаг? кажется, что он, возможно, потеряет свою ценность или не устанавливает правильное значение «TRUE». – Marioea

+0

Я работаю над решением. Некоторые из других ответов имеют хорошие моменты, но это почему-то кажется, что iOS распознает дополнительный контакт, прежде чем я могу запретить второй popover. Я думаю, что это вопрос времени –

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