现在的位置: 首页 > 综合 > 正文

reason: ‘Unknown key, “NSColor” in title text attributes dictionary

2016年01月21日 ⁄ 综合 ⁄ 共 2126字 ⁄ 字号 评论关闭

iOS 6 和 iOS 7 兼容性问题,在调用内部发短信接口时候,出现了异常崩溃,原来一直在iOS7 下测试,一切正常,但是在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:@"设备没有短信功能"];
    }
}

即可适配 iOS6 和 iOS 7 发送短信功能。

个人开发者梦工厂之 微推:www.micropush.cn

抱歉!评论已关闭.