1

我在 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 异常。

在此处输入图像描述

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

这种奇怪的行为有什么线索吗?

4

2 回答 2

1

这会崩溃,因为您正在使用不支持所有自定义的外观代理。它似乎不支持 backgroundColor 所以你必须单独修改每个文本字段

于 2013-07-10T08:08:46.163 回答
0

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

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

//根据需要设置属性。

参考这里了解更多

于 2013-07-10T06:18:21.767 回答