2

UIActionSheet を使用して、iPad アプリでユーザーに 2 つのオプションを提示しています。ユーザーがいずれかのオプションを選択すると、UIActionSheetDelegate が残りを処理します。ただし、ユーザーが誤って iPad 画面の他の場所をタップすると、UIActionSheet は自動的に閉じられ、2 つのオプションのどちらも選択されません。UIActionSheet が自動的に閉じられないようにするにはどうすればよいですか? ユーザーは 2 つのオプションのいずれかを選択する必要があります。

4

3 に答える 3

0

アクション シートが UIPopover 内にある場合の回避策は、UIPopoverDelegate を使用して、アクション シートが存在する場合にポップオーバーが閉じないようにすることです。別の解決策は、代わりに UIAlertView を使用することです。これにより、アラートとの対話以外は何も起こりません。あなたにとっての解決策ではないかもしれません。画面の別の部分に触れた場合に UIActionSheet が自動的に閉じられるという他の方法は知りません。

アクション シートが表示されるときの BOOL 変数を作成する

BOOL actionSheetVisible; //in header file

//in @implementation file
-(void)displayAlert {
    actionSheetVisible = YES;
    //code to display UIAction sheet...
}

#pragma mark PopoverControllerDelegate method
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popover {
    if (actionSheetVisible) {
        return NO;
    }
    return YES;
}

#pragma mark UIAlerViewDelegate
...actionSheet:(UIActionSheet *)sheet selectedObjectAtIndex:(NSUInteger)index { ... //not sure what this method is at the moment
    actionSheetVisible = NO;
    //handle action sheet
}
于 2012-09-07T13:23:27.467 に答える
0

何もしないアプリ ウィンドウにジェスチャー コントローラーを追加するのはどうですか? または、シートの下のビューに追加してみてください。完了したら必ず削除してください;)

于 2012-09-07T13:27:15.897 に答える
0

アクション シートを表示する直前に、画面全体を覆う透明なビューをウィンドウに追加し、ビューを設定します。userInteractionEnabled = NO の場合、アクション シートが閉じられたときにビューを削除します。[私は iPad でこれをテストしませんでしたが、電話でこの手法を使用しました]

于 2012-09-07T13:42:31.093 に答える