ios不响应presentModalViewController界面的处理
生活随笔
收集整理的這篇文章主要介紹了
ios不响应presentModalViewController界面的处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近折騰ios的一個郵件分享和SMS短信分享功能,本來是很簡單的的功能,但是我發現打開的郵件界面和短信界面一直不響應navigationController上面的按鈕,感覺很奇怪的,最后發現,需要在打開的這些界面的委托實現方法中,把打開的視圖關閉,說的有點別扭吧! 我發一段代碼出來,大家可能會明白的!
-(void)sendSMSComposerSheet {MFMessageComposeViewController *messageCtrl = [[MFMessageComposeViewController alloc] init];messageCtrl.messageComposeDelegate = self;messageCtrl.body = @"share ....";[self presentModalViewController:messageCtrl animated:YES]; }
以上代碼修改為:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {[controller dismissModalViewControllerAnimated:YES]; }
或者:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {[controller dismissViewControllerAnimated:YES completion:^{}]; }
兩種方式都可以的,這樣就能解決ios使用presentModalViewController打開viewController,相應viewcongroller上面的相關按鈕了!
同時在附加上 ios發送郵件的代碼:
-(void)sendMailComposerSheet {MFMailComposeViewController *mailCtrl = [[MFMailComposeViewController alloc] init];mailCtrl.mailComposeDelegate = self;[mailCtrl setSubject:@"郵件標題"];[mailCtrl setMessageBody:@"郵件內容" isHTML:NO];[self presentModalViewController:mailCtrl animated:YES]; }
相關的委托:MFMailComposeViewControllerDelegate
界面的處理
-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {[controller dismissModalViewControllerAnimated:YES]; }
注意:如果想調用發送短信和郵件的功能,必須要引入一個庫:MessageUI.framework ?
還需要import一些類:
-(void)sendSMSComposerSheet {MFMessageComposeViewController *messageCtrl = [[MFMessageComposeViewController alloc] init];messageCtrl.messageComposeDelegate = self;messageCtrl.body = @"share ....";[self presentModalViewController:messageCtrl animated:YES]; }
這段代碼實現的委托就:MFMessageComposeViewControllerDelegate
可是我的代碼中也實現了委托,代碼如下:
?
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {}但是打開短信界面是沒問題的,關鍵是點擊短信界面的取消按鈕沒有相應,最后我想了一下,估計要在委托的實現方法中關閉打開的視圖,結果的確如此!以上代碼修改為:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {[controller dismissModalViewControllerAnimated:YES]; }
或者:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {[controller dismissViewControllerAnimated:YES completion:^{}]; }
兩種方式都可以的,這樣就能解決ios使用presentModalViewController打開viewController,相應viewcongroller上面的相關按鈕了!
同時在附加上 ios發送郵件的代碼:
-(void)sendMailComposerSheet {MFMailComposeViewController *mailCtrl = [[MFMailComposeViewController alloc] init];mailCtrl.mailComposeDelegate = self;[mailCtrl setSubject:@"郵件標題"];[mailCtrl setMessageBody:@"郵件內容" isHTML:NO];[self presentModalViewController:mailCtrl animated:YES]; }
相關的委托:MFMailComposeViewControllerDelegate
界面的處理
-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {[controller dismissModalViewControllerAnimated:YES]; }
轉載于:https://www.cnblogs.com/springskyhome/archive/2013/05/29/3689916.html
總結
以上是生活随笔為你收集整理的ios不响应presentModalViewController界面的处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 4293
- 下一篇: WPF学习一--概述