我遇到了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上隐藏了状态栏,然后调用显示的邮件视图控制器作为当前的模态视图控制器。但是,问题是当应用程序处于横向模式并出现 uikeyboard 时,当取消按钮点击为图像时,操作表不会显示:http://img651.imageshack.us/img651/5489/screenshot20120514at114.png
左上角的红色小图像是操作表。如果我设置状态栏隐藏 = 否,它会显示。
感谢您的帮助,谢谢
我能够通过注册UIKeyboardWillShowNotification来解决此问题(我认为这是一个iOS错误)。每当显示键盘时,我都会手动将 MFMailComposeViewController 的超级视图的框架设置为 +/- 20(状态栏高度),具体取决于方向(横向向左或向右)。这是一个非常丑陋的黑客,但它现在对我有用。
我用了一个计时器,移动
[self presentViewController:mc animated:YES completion:^(void) {}];
到操作表之外,它也可以工作。