当iOS4上的setStatusBarHidden:YES时,MFMailComposeViewController操作表处于屏幕外

时间:2012-05-14 16:57:34

标签: ios ipad ios5

我遇到了MFMailComposeViewController取消按钮的问题。这是我的背景

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
   [[UIApplication sharedApplication] setStatusBarHidden:YES];
}

- (IBAction)showButtonDidTouch:(id)sender {
    if ([MFMailComposeViewController canSendMail]) {
         MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
         mailViewController.mailComposeDelegate = self;
         mailViewController.modalPresentationStyle = UIModalPresentationFormSheet;
         [self presentModalViewController:mailViewController animated:YES];
         [mailViewController release];
}
}

我在viewDidLoad中隐藏状态栏,然后调用显示的mailViewController作为当前的模态视图控制器。但是,问题是当横向模式和uikeyboard中的应用程序出现时,当取消按钮被点击为图像时,操作表不会显示:http://img651.imageshack.us/img651/5489/screenshot20120514at114.png

左上角的小红色图像是操作表。如果我设置statusbarhidden = NO,它会显示出来。

感谢您的帮助,谢谢

2 个答案:

答案 0 :(得分:1)

通过注册UIKeyboardWillShowNotification,我能够解决这个问题(我认为这是一个iOS错误)。每当显示键盘时,我手动将我的MFMailComposeViewController的超级视图的帧设置为+/- 20(状态栏高度),具体取决于方向(横向左侧或右侧)。这是一个非常难看的黑客,但它现在对我有用。

答案 1 :(得分:-1)

我用了一个计时器,移动

[self presentViewController:mc animated:YES completion:^(void) {}];

到动作表之外,它也可以。