3

アプリケーションで UIActionsheet を表示しようとしています。縦向きモードでは完全に機能しますが、横向きに表示しようとすると、下からスライドします。ただし、ランドスケープ モードの場合のように、ピッカー コントロールでボタンやディスプレイを使用しなくなりました。間違った位置にあるだけです。

私は自動回転を使用せず、すべてを縦向きモードに保ちます。時折、ランドスケープ モードで物事を表示していて、アクションシートを適切に表示したいことがあります。

ステータスバーの向きを次のように設定しています...

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];

「ランドスケープ モード」の場合、ステータス バーは常に正しく表示されます。AlertView を表示すると、正しく表示されます。次に、このようにアクションシートを表示しています

UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel Button" destructiveButtonTitle:nil otherButtonTitles: @"button", nil];    
as.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[as showInView:self.view];
//[as showFromToolbar:toolbar];

アプリのデリゲートとツールバーからも表示しようとしました。表示する直前にステータスバーの向きを設定しても、まだ機能しません。私も試してみました。

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];

アクションシートが正しいコントロールで間違った位置に表示される理由を知っている人はいますか? または、アクションシートを特定の位置に強制的に表示する方法。アクションシートを正しく表示するために、独自のバージョンのアクションシートを実装する必要はありません。

前もって感謝します。

編集/解決策:アクション シートを強制的に横向きモードで表示する

これが私がそれを機能させる方法です。横向きのビューを作成し、メインウィンドウに次のように追加しました。

landscapeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 480, 480)];
landscapeView.transform = CGAffineTransformMakeRotation((-1)*M_PI/2);
landscapeView.bounds = CGRectMake(0, 0, 480, 380);
[appDelegate.window addSubview:landscapeView];

そして、このように私のアクションシートを表示しました

if (landscape) {
    [menu showInView:landscapeView];
} else {
    [menu showInView:self.view];
}

tcさん、ありがとうございます。ここで私を正しい方向に向けてくれて。

4

2 に答える 2

13

同様の問題がありました。ツールバーにアクション シートを表示するボタンがありました。アクション シートを表示するコードは、私の rootViewController にありました。次のコードを使用すると、ランドスケープ モードで正しく表示されません。

[actionSheet showInView:[self.view]];

この変更により、次の問題が修正されました。

[actionSheet showInView:[self.navigationController view] ];

ActionSheet は ShowInView に渡されたビューから向きを取得しているようで、現在のビューがランドスケープであったにもかかわらず、私の rootViewController はポートレート モードでした。少なくとも、それが私の理論です。

于 2010-10-05T23:40:34.503 に答える
2

全体的な「インターフェイスの向き」には、現在のビューの変換、UIViewController が現在の向きであると考えるもの、およびおそらく他のものも含まれます。ステータス バーの向きを設定するだけでは必ずしも十分ではありません。

セルフビューは縦向きですか?

于 2010-09-12T04:40:34.433 に答える