通过在运行时更改UITextFieldBorderStyle,iOS 5中的UITextField问题

时间:2011-10-13 19:57:34

标签: ios uitextfield ios5

我现在突然遇到一些UITextFields,因为我正在iOS 5设备上进行测试,即使我在iOS 5 SDK中构建了应用程序并且已经让错误发布了。

我有一个允许输入的文本字段,当你按下“锁定”按钮时,它会调用:

textField.enabled = NO;
textField.borderStyle = UITextBorderStyleNone;

字段“隐藏”但仍然像标签一样 - 应用程序的重要功能。

然后再次按下“锁定”按钮,它会调用:

textField.enabled = YES;
textField.borderStyle = UITextBorderStyleRoundedRect;

这在4.2 / 4.3中非常有效,但在iOS 5中,唯一出现的是文本区域的斜面轮廓,没有白色背景颜色。

设置.backgroundColor在iOS 5上修复它,但在4.2 / 4.3上形成一个丑陋的白色方块。

我没有看到API差异文档中的这些变化,我在这里缺少什么? 提前谢谢..

4 个答案:

答案 0 :(得分:2)

如果您对白色背景感觉不错,我会将此注释修复为指定背景颜色并将不透明属性设置为NO的行

//[myTextField setBackgroundColor:[UIColor whiteColor]];

[myTextField setOpaque:NO];

这解决了iOS 4.3和iOS 5.0的问题

-Alex

答案 1 :(得分:0)

userInteractionEnabled是更一般的UIView类的属性,因此可能不会像UIControl的子类那样表现,例如UITextField。相反,您应该将enabled属性设置为NO以暂时禁用控件,在UITextField的情况下,该控件将完全按照您的要求执行。

答案 2 :(得分:0)

可能的解决方法是将alpha设置为0.00001。这为您提供了有效隐藏的标签,这些标签仍然可以响应控制事件。

答案 3 :(得分:0)

我遇到了类似的问题,UITextBorderStyleNone在iOS 4.3中工作正常,但在iOS 5上停止工作。我认为这是Apple的一个错误,因为它在设备和模拟器上都不起作用。我认为你最好的方法是根据需要在标签和文本字段之间切换,就像darvids0n建议直到Apple解决了这个bug。