2012-06-21 8 views
12

私は非常に奇妙な問題があります。現在のモーダルビューコントローラを使用して、MFMailComposer ViewControllerをナビゲーションバーに配置されたViewControllerの上に表示しています。私が使用隠すためにdismissModalViewController親ビューをステータスバーの背後に隠します。

[self presentModalViewController:emailviewController animated:YES];

、...

-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 

    [self dismissModalViewControllerAnimated:YES]; 
} 

すべてが正常に動作しますが、私は私のMailComposerを閉じたときに、元のビューコントローラは、ステータスバーの後ろに隠します。

私はsetFrameメソッドを使ってビューのオフセットを10で修正しようとしましたが、うまくいきませんでした。 (これはモーダルビューコントローラの表示と解除の前後に疲れています)

私はステータスバーを一時的に隠してみましたが、うまくいきませんでした。

私はself.navigationcontrollerのpresentmodalviewcontrolleを試してみましたが、それはあまりにも働いていなかった...

任意のアイデアや提案は非常に編集した

After dismissmodalviewcontroller called

をいただければ幸いです。ほとんどの人は私を与えます手動でオフセットを修正するための提案。 それはうまくいきません。もし私が私のviewDidLoad/viewWillapperで元のviewcontrollerメソッドを実行すると、現在のモーダルビューコントローラの前に私のビューがシフトするのに対し、モーダルビューコントローラをロードした後は正常になります。

  • (ボイド)viewDidAppear:(BOOL)アニメーション{ CGRectフレーム= self.navigationController.view.frame。 frame.origin.y = 20; self.navigationController.view.frame = frame; }

Changing offset results in this

+0

元のビューコントロールrステータスバーを非表示にするかどうかを設定しますか? – Ladislav

+0

nope ..まだステータスバーに触れていません –

+0

モーダルビューコントローラと元のビューコントローラでステータスバーは変わりませんか? – Ladislav

答えて

3

ViewDidAppearでこれを入れてみてください:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; 

最悪の場合、常にでafterFirstLaunchためのブール値を宣言し、モーダルビューコントローラが却下された後にのみ起こっている場合.hこれをviewDidAppearに入れてください:

if(afterFirstLaunch){ 
     CGRect frame = self.navigationController.view.frame; 
     frame.origin.y = 20; 
     self.navigationController.view.frame = frame; 
} 
else { 
     afterFirstLaunch = true; 
} 
+0

それでも問題が解決しない場合は、ポスティングコードが役立ちます。両方のビューはInterface Builderを使用して作成されていますか?どのようにモーダルビューコントローラを提示していますか? – WolfLink

+0

にも同じ問題がありますが、実際にはうまくいきませんでした。 –

+0

ビューフレームの移動がすべて完了した後にビューフレームを移動すると、非常に厄介なように見えます。ビューは、表示される前に適切に配置する必要があります。 – Darren

関連する問題