2012-03-29 125 views
2

我正在使用MFMessageComposeViewController以顯示SMS發送界面。MFMessageComposeViewController未正確顯示

我的應用程序使用全屏幕,狀態欄被plist文件中的設置隱藏(狀態欄最初隱藏= YES)。

當我顯示與消息作曲家:

+(void)composeSMS:(id)sender 
{ 
    if (![MFMessageComposeViewController canSendText]) return; 

    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 

    controller.wantsFullScreenLayout = YES; 

    controller.messageComposeDelegate = sender; 
    [controller setBody:@"He descubierto un App estupenda! . "]; 
    [controller setModalPresentationStyle:UIModalTransitionStyleFlipHorizontal]; 
    if (controller) [sender presentModalViewController:controller animated:YES]; 
    [controller release]; 

} 

的問題是顯示作曲家當導航欄是在頂部y = 0的,但是這條和所述視圖的網點的其餘部分之間出現與狀態欄大小相同的空白區域。狀態欄顯示在此屏幕(第二期)中,但與作曲家視圖的導航欄重疊。

在狀態欄沒有隱藏的其他項目中,這個項目就像一個魅力。但這是第一個沒有狀態欄的項目,這種情況正在發生。

任何人都知道如何解決它?

謝謝。

回答

2

我在應用程序中使用iMessage處理的方式是自己控制狀態欄。 例如:

[[UIApplication sharedApplication] setStatusBarHidden:FALSE withAnimation:UIStatusBarAnimationSlide]; 
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; 
controller.messageComposeDelegate = self; 
[self presentModalViewController:controller animated:TRUE]; 
[controller release]; 

然後,當通過發送完畢或者或取消:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result { 
     [self dismissModalViewControllerAnimated:TRUE]; 
     [[UIApplication sharedApplication] setStatusBarHidden:TRUE withAnimation:UIStatusBarAnimationSlide]; 
     self.view.frame = CGRectMake(0.0, 0.0, [LayoutHelper width], [LayoutHelper height]); 
     self.view.center = CGPointMake([LayoutHelper xCenterPoint], [LayoutHelper yCenterPoint]-20); 
} 

這似乎顯示的iMessage,然後返回到應用程序,而不從狀態欄出現的任何空白被添加或刪除。

這是我的第一篇文章,所以我希望這有助於某種方式。

歡呼聲

3

模態呈現消息控制器後隱藏狀態欄。類似這樣的:

controller.wantsFullScreenLayout = NO; 
[self presentModalViewController:controller animated:YES]; 
[[UIApplication sharedApplication] setStatusBarHidden:YES];