reason: 'Unknown key, "NSColor"in title text attributes dictionary

2803 ワード

iOS 6とiOS 7の互換性の問題は、内部メールインタフェースを呼び出すと、異常なクラッシュが発生し、iOS 7でテストされていたが、すべて正常だったが、iOS 6で突然クラッシュした.具体的なコードは以下の通りである.
- (void)showMessageViewWithRecipients:(NSArray *)recipients body:(NSString *)bodyMess
{
    if( [MFMessageComposeViewController canSendText] ){
  	  <span style="font-family: Arial, Helvetica, sans-serif;"> [[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];</span>
            [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor darkGrayColor],NSForegroundColorAttributeName,		[UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];
 
        MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
        controller.recipients = recipients;
        controller.body = bodyMess;
        controller.messageComposeDelegate = self;
        [self presentViewController:controller animated:NO completion:nil];
        
    }else{
        [self alertWithTitle:@" " msg:@" "];
    }
}

注意:真ん中にメールナビゲーションタイトルを設定するコードがあり、次の異常が発生します.
Assertion failure in NSDictionary *_UIRecordArgumentOfInvocationAtIndex(NSInvocation *, NSUInteger, BOOL)(), /SourceCache/UIKit/UIKit-2380.17/UIAppearance.m:1118
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unknown key, "NSColor" in title text attributes dictionary'

ソリューションは次のとおりです.
1、このメールのタイトルを修正するコードを削除して、役に立たないようで、汗..
2,バージョン判定#define OS_VERSION [[UIDevice currentDevice].systemVersion floatValue]
- (void)showMessageViewWithRecipients:(NSArray *)recipients body:(NSString *)bodyMess
{
    if( [MFMessageComposeViewController canSendText] ){
        
        
        if (OS_VERSION>=7.0) {
            [[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
            [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor darkGrayColor],NSForegroundColorAttributeName,[UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];
        }

        MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
        controller.recipients = recipients;
        controller.body = bodyMess;
        controller.messageComposeDelegate = self;
        [self presentViewController:controller animated:NO completion:nil];
        
    }else{
        [self alertWithTitle:@" " msg:@" "];
    }
}

iOS 6とiOS 7のメール送信機能に適しています.
個人開発者夢工場の微推:www.micropush.cn