2014-01-28 1 views
1

Преобразование устаревшего приложения для iOS 7. У большинства проблем есть проблема, но у нас есть функция, которая отправляет сообщения об ошибках с помощью MFMailComposeViewController, а строка состояния черная на черном в этом представлении ,iOS 7 Цвет строки состояния MFMailComposeViewController

Цвет текста в строке состояния установлен на белый в глобальном масштабе с использованием настроек plist, и это, похоже, отлично справляется со всем остальным. Только электронная почта VC действует. (Мы представляем его с использованием presentModalViewController.)

Кто-нибудь понял, как взломать эту гайку?

Update: Пробовал подклассов MFMailComposeViewController и реализации preferredStatusBarStyle, но это не вызывается, даже после установки «View контроллера на основе строки состояния» ДА в PLIST.

ответ

2

Следующая Клюге появляется, чтобы сделать работу:

 // Present the email controller. The delegate will dismiss it. 
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 50000 
     float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 
     if (systemVersion < 7.0f) { 
      [viewController presentViewController:emailController animated:YES completion:^{}]; 
     } 
     else { 
      // Need a song and dance to get the header bar to show correctly. (And presentModalViewController is deprecated anyway.) Note that this code doesn't actually change the email controller's header, but it somehow lets the header below "show through" when it wouldn't otherwise. (I know -- like many of the iOS 7 fixes this makes no sense. But it works. (So far.)) 
#warning Sometimes produces console message "Presenting view controllers on detached view controllers is discouraged <XxxxViewController: 0xc658a70>" 
      [viewController presentViewController:emailController animated:YES completion:^{ 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 
       if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
        && [[UIApplication sharedApplication] respondsToSelector:NSSelectorFromString(@"setStatusBarStyle:")]) { 
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
       } 
#endif 
      }]; 
     } 

#else 
     [viewController presentModalViewController:emailController animated:YES]; 
#endif