UITextField __CFStringEncodeByteStream EXC_BAD_ACCESS

时间:2013-07-10 05:33:44

标签: ios xcode uitextfield exc-bad-access

我在UITextField上有一个奇怪的例外。我解决了它,但不知道为什么会这样做。 运行应用程序后,我按如下方式设置UITextField外观:

UITextField *textfieldAppearance = [UITextField appearance];
textfieldAppearance.font = [_theme textfieldFont];
textfieldAppearance.textColor = [_theme textfieldColor];
if (textDirectionRTL) {
    textfieldAppearance.textAlignment = NSTextAlignmentRight;
}
textfieldAppearance.backgroundColor = [UIColor clearColor];

正如您所看到的,它并没有什么异常,但是当打开UITextField的控制器时,我得到一个__CFStringEncodeByteStream + 17 EXC_BAD_ACCESS异常。

enter image description here

解决方案是注释掉 backgroundColor 设置。 我在UITextView上有完全相同的外观设置,一切都还可以。 而且,当我在awakeAfterUsingCoder中的代码中设置UITextField backgroundColor时,一切都像魅力一样。 我在XCode版本4.6.3(4H1503)模拟器中运行应用程序

这种奇怪行为的任何线索?

2 个答案:

答案 0 :(得分:1)

由于您使用的外观代理不支持所有自定义,因此崩溃了。它似乎不支持backgroundColor,因此您必须单独修改每个文本字段

答案 1 :(得分:0)

首先,为什么你使用UIAppearance类来自定义UItextfield .. ??您试图设置的所有属性都存在于UItextField本身......!

textField.backgroundColor = [UIColor clearColor];
textField.textColor = [UIColor redColor];
textField.textAlignment = UITextAlignmentCenter;
textField.font = [UIFont fontWithName:@"font name" size:12.0];

//根据需要设置属性。

Refer here for more