我有一個奇怪的問題,我只是做一個簡單的呈現模態視圖控制器。準確地說是MFMailComposeViewController
。但是,它出現在呈現控制器後面,因此您不能發送任何電子郵件或類型。您可以在郵件編輯器上看到UINavigationBar
上的「取消」按鈕,但彈出展示控制器後面的UIAlertController
。這是怎麼發生的?它是一個iOS 11的問題?我也得到了類似的行爲UIAlertController
。iOS 11 presentViewController後面呈現控制器
此外,如果我按發送並按下我的按鈕彈出另一個作曲家,它將正常工作。這只是第一個。
請參閱附加的圖像,我從Xcode。
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的代表意見。這表明我第一次有一個不同的過渡代表,並且第二次有我想要的過渡代表。
問題是導航控制器在關閉控制器之前推了新的控制器(菜單控制器)。一個簡單的解決方法,但因爲它在開始時並不明顯,並且沒有錯誤日誌,所以難以確定點。
此外,我已將此置於主線程以避免任何混淆 – mashdup
您可以將項目上傳到Github嗎? – LinusGeffarth
不幸的是我不能。但我將不得不使用另一種解決方案,感謝您尋找 – mashdup