0

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 が表示されたときに、キャンセル ボタンが画像としてタップされたときにアクション シートが表示されないことです

左上隅の小さな赤い画像はアクション シートです。statusbarhidden = NO に設定すると表示されます。

私はあなたの助けに感謝します、ありがとう

4

2 に答える 2

1

UIKeyboardWillShowNotification に登録することで、この問題 (iOS のバグと見なされます) を回避することができました。キーボードが表示されているときは常に、MFMailComposeViewController のスーパービューのフレームを向き (横向きの左または右) に応じて手動で +/- 20 (ステータス バーの高さ) に設定します。これはかなり醜いハックですが、今のところうまくいきます。

于 2012-06-18T10:13:04.743 に答える
-1

タイマーを使って移動

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

アクションシートの外側に、それも機能します。

于 2015-04-08T03:58:19.877 に答える