Feche o Popover e abra um novo com um toque em

s "Diretrizes para interfaces humanas móveis da Apple" dizem sobre popovers:

Sempre que possível, permita que as pessoas fechem uma janela popover e abra uma nova com um toqu Esse comportamento é especialmente desejável quando vários botões de barra diferentes abrem uma janela popover, porque evita que as pessoas tenham que fazer toques extra

A única solução que posso pensar agora é rastrear a posição do toque ao descartar a popover e verificar se essa era a posição de outro botão. Existe alguma maneira mais fácil de fazer isso?

PS: Eu procurei no stackoverflow e pesquisei bastante antes de postar. Desculpe, se isso foi perguntado aqui antes.

ATUALIZA

Acho que não me expliquei bem. Digamos que eu tenho três botões. Todos eles abrem uma popover. Meu usuário toca no botão # 1 e uma popover é aberta. Enquanto a popover está aberta, o usuário toca no botão # 2. O popover é descartado (porque o usuário tocou fora do popover - comportamento padrão dos popovers não modais) e um novo popover é aberto porque o usuário clicou no botão # 2. Tudo isso sem ter que tocar duas vezes: uma vez para descartar a popover e duas vezes para abrir a nov

2ª ATUALIZAÇÃO

Eu construí um manequim simples para reproduzir o que estou tentando fazer. Quando o usuário toca em um botão e uma popover é aberta, o método que abre as popovers não é chamado. Portanto, o usuário precisa clicar duas vezes para abrir o segundo popover. Alguma ideia

#import "RootViewController.h"
#import "AViewController.h"

@interface RootViewController() 

@property (nonatomic, retain) UIPopoverController *currentPopover;

@end

@implementation RootViewController

@synthesize currentPopover;

- (void)loadView
{
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
    UIView *view = [[UIView alloc] initWithFrame:applicationFrame];

    CGRect buttonFrame = CGRectMake(50, 100, 200, 40);

    for (int i = 0; i < 3; i++) 
    {

        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [button setTitle:[NSString stringWithFormat:@"Button %i", i + 1] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(openPopover:) forControlEvents:UIControlEventTouchDown];
        [button setFrame:buttonFrame];
        [view addSubview:button];

        buttonFrame.origin.y += 50;
    }


    self.view = view;
    [view release];
}

- (IBAction)openPopover:(id)sender
{
    AViewController *avc = [[AViewController alloc] init];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:avc];
    [avc release];

    UIPopoverController *tempPopover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
    [tempPopover setDelegate:self];
    [tempPopover setPopoverContentSize:CGSizeMake(320, 500)];
    [tempPopover presentPopoverFromRect:[sender frame] inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

    self.currentPopover = tempPopover;
    [tempPopover release];


    [navigationController release];
}

- (void)dealloc
{
    [currentPopover release];
    [super dealloc];
}

@end

questionAnswers(3)

yourAnswerToTheQuestion