2017-10-06 125 views
5

我有一個奇怪的問題,我只是做一個簡單的呈現模態視圖控制器。準確地說是MFMailComposeViewController。但是,它出現在呈現控制器後面,因此您不能發送任何電子郵件或類型。您可以在郵件編輯器上看到UINavigationBar上的「取消」按鈕,但彈出展示控制器後面的UIAlertController。這是怎麼發生的?它是一個iOS 11的問題?我也得到了類似的行爲UIAlertControlleriOS 11 presentViewController後面呈現控制器

此外,如果我按發送並按下我的按鈕彈出另一個作曲家,它將正常工作。這只是第一個。

請參閱附加的圖像,我從Xcode。

enter image description here

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
mailer.mailComposeDelegate = self; 
mailer.modalPresentationStyle = UIModalPresentationFormSheet; 
[mailer setSubject:@"subject Feedback"]; 
[mailer setToRecipients:@[@"email address"]]; 
[mailer setMessageBody:@"" isHTML:NO]; 
[self presentViewController:mailer animated:YES completion:nil]; 

編輯:添加控制器的詳細信息。

#import "AboutViewController.h" 
#import <MessageUI/MessageUI.h> 


@interface AboutViewController() <MFMailComposeViewControllerDelegate> 
@property (nonatomic, strong) IBOutlet UIView *contentView; 
@end 

@implementation AboutViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.title = @"About this app"; 
    _contentView.layer.cornerRadius = 10.; 
    _contentView.layer.shadowColor = [UIColor blackColor].CGColor; 
    _contentView.layer.shadowRadius = 3.; 
    _contentView.layer.shadowOpacity = 0.4; 
    _contentView.layer.shadowOffset = CGSizeMake(3., 3.); 
    // Do any additional setup after loading the view from its nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)sendFeedbackEmail:(id)sender { 
    if ([MFMailComposeViewController canSendMail]){ 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
      mailer.mailComposeDelegate = self; 
      mailer.modalPresentationStyle = UIModalPresentationFormSheet; 
      [mailer setSubject:@"Feedback"]; 
      [mailer setToRecipients:@[@"[email protected]"]]; 
      [mailer setMessageBody:@"" isHTML:NO]; 
      [self presentViewController:mailer animated:YES completion:nil]; 

     }); 
    } else { 
     NSLog(@"Nope"); 
    } 
} 

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 
    [controller dismissViewControllerAnimated:YES completion:nil]; 
} 

編輯2:

我相信我已經找到了答案。我希望這可以幫助任何遇到同樣問題的人。謝謝你所有的答覆,它幫助我找到答案。謝謝@Mert Buran的代表意見。這表明我第一次有一個不同的過渡代表,並且第二次有我想要的過渡代表。

問題是導航控制器在關閉控制器之前推了新的控制器(菜單控制器)。一個簡單的解決方法,但因爲它在開始時並不明顯,並且沒有錯誤日誌,所以難以確定點。

+0

此外,我已將此置於主線程以避免任何混淆 – mashdup

+0

您可以將項目上傳到Github嗎? – LinusGeffarth

+0

不幸的是我不能。但我將不得不使用另一種解決方案,感謝您尋找 – mashdup

回答

相關問題