I had trouble with this approach. In my app I used MFMailComposeViewController for email and MFMessageComposeViewController for SMS messages and both didFinishWithResult routines used a similar approach to the one above, where an alert is shown before the VC is dismissed.
It seemed that if you sent an SMS, the next time you tried an email the cursor would not appear in the email body and you could not select any text. Also in the debugger I was getting "wait_fences: failed to receive reply: 10004003".
I eventually just removed the alert views from this part of the app and the problem went away. If anyone has a resolution for this issue I'd be glad to hear it.