0

私はユニバーサルアプリを持っていて、いくつかのボタンが付いたアクションシートを持っています。追加ボタン(navigationItem.right)をタップすると、ポポエバーに表示されます。これは正しく行われますが、actionSheetをバーボタンアイテムに関連付けると、追加ボタンを継続的にタップして、より多くのポップアップを表示できます。

ポップオーバーの外をタップするとこれが却下されると思いました...

- (IBAction)ShowItemAdd:(id)sender
{
    addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
    if ([[UIDevice currentDevice] isPad]) {
        [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
    } else {
        [addActionSheet showInView:self.view];
    }
}

バーボタンアイテムにバインドしているのに、これが自動的に閉じられないのはなぜですか?

編集

上部のnavigationItemバー(青いバー)の任意の場所をタップしても、actionSheetは閉じませんが、navコントローラーの外側をタップすると、アクションシートは閉じられます。

ここに画像の説明を入力してください

4

1 に答える 1

1

メソッドでは、最初にアクションシートがすでに表示されているかどうかを確認し、表示されている場合は、新しいアクションシートを作成する代わりに非表示にする必要があります。

- (IBAction)ShowItemAdd:(id)sender
{
    if ([addActionSheet isVisible]) {

        [addActionSheet dismissWithClickedButtonIndex:[addActionSheet cancelButtonIndex] animated:YES];

    } else {

        addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
        if ([[UIDevice currentDevice] isPad]) {
            [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
        } else {
            [addActionSheet showInView:self.view];
        }
    }
}
于 2012-08-21T02:17:41.773 に答える