その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

【iOS7】MFMessageComposeViewController の宛先フィールドが真っ黒になる件の対処法

iOS7で、MFMessageComposeViewController を表示すると、次のように宛先(Recipients)フィールドが真っ黒になって表示される件の対処法のメモ。



これ、UINavigationController 管理下にある UIViewController から MFMessage〜 を presentViewController:animated:completion で表示するときに発生しました(UINavigationController使ってない場合は問題なかった)。

対処法

こちらのページの、2番目の回答にある方法がお手軽で有効でした。


MFMessageComposeViewController を表示する前に UIAppearanceで次のようにセットしておき、

[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];


表示し終わったら(すなわち messageComposeViewController:didFinishWithResult: で)元に戻す

UIImage *backgroundImage = [UIImage imageNamed:@"Navigation Bar"];
[[UINavigationBar appearance] setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];