// // MFMailComposeViewControllerFix.c // App // // Created by James Magahern on 5/25/21. // #import #import #import @interface MFMailComposeViewController (InternalMethods) + (BOOL)canSendMailSourceAccountManagement:(NSInteger)sourceAccountManagement; @end static void swizzleClassMethod(Class targetClass, SEL originalSelector, IMP replacementIMP) { Method originalMethod = class_getClassMethod(targetClass, originalSelector); method_setImplementation(originalMethod, replacementIMP); } __attribute__((constructor)) static void swizzleMFMailComposeViewController() { // Hacks to work around the fact that MFMailComposeViewController is broken in iOS 14+ swizzleClassMethod(MFMailComposeViewController.class, @selector(canSendMail), imp_implementationWithBlock(^BOOL(void) { return YES; })); swizzleClassMethod(MFMailComposeViewController.class, @selector(canSendMailSourceAccountManagement:), imp_implementationWithBlock(^BOOL(NSInteger sam) { return YES; })); }