3

アプリにアクションシートが表示されていますが、すべて iPhone で正常に動作します。ただし、iPadでは、ポップオーバー内にアクションシートが自動的に作成され、ユーザーがアクションシートの外側に触れたときに消えることを無効にすることはできません。

ipad のアクションシートの表示方法を変更し、次を使用して表示されるようになりました。

        UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Choose a preloaded picture", @"Use a photo", nil];
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    actionSheet.tag = 1;
    [actionSheet showFromRect:CGRectMake(100, 0, 300, 300) inView:self.view animated:YES];
    [actionSheet release];

私も使ってみました。

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
     return NO;
}

ユーザーがアクションシートの外に触れたときに uiactionsheet ポップオーバーが消えないようにする方法について何か考えはありますか?

4

1 に答える 1

1

UIPopoverControllerDelegatepopoverControllerShouldDismissPopover:メソッドであり、UIActionSheet を扱っているため、このメソッドは呼び出されません。UIKit はポップオーバー コントローラーを自動的に作成するため、デリゲートを設定する機会はありません。で popover ビュー自体にアクセスできます[popoverActionsheet superview]が、それでは UIPopoverController は得られません。

ユーザー エクスペリエンスの観点から、Apple はそのような動作を実装しないように求めます — オプションをモーダルな方法 (ユーザーが選択するまで消えない) で表示する必要がある場合、ユーザーはUIAlertView、または独自のモーダル表示のビュー コントローラー

于 2011-11-11T15:57:49.657 に答える