2011-11-11 4 views
2

私のアプリケーションにアクションシートが表示され、すべてが正常に動作しています。しかし、ipadでは、自動的にアクションシートをポップオーバー内に作成するので、ユーザーがアクションシートの外に触れたときには、それを無効にすることはできません。ActionSheetを無効にすると、ユーザーがポップオーバーの外に触れるとipadで終了する

私はactionsheetは、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; 
} 

私は、ユーザーがactionsheet外に触れたときに解雇からuiactionsheetのポップオーバーを停止することができます方法上の任意のアイデア?

答えて

1

popoverControllerShouldDismissPopover:メソッドはUIPopoverControllerDelegateメソッドであり、UIActionSheetを処理しているため呼び出されません。 UIKitは自動的にPopover Controllerを作成するので、デリゲートを設定する機会はありません。あなたは[popoverActionsheet superview]でポップオーバービューにアクセスすることができますが、UIPopoverControllerを与えるわけではありません。

ユーザーエクスペリエンスの観点からは、アップルはこのような動作を実装しないように頼んでいます。オプションをモーダルに提示する必要がある場合(ユーザーが選択するまで離さない場合)、ユーザーはUIAlertViewにもっと精通しているか、a modally-presented view controller of your ownです。

関連する問題