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

即使我在iOS 5 SDK中构build了应用程序,并已经让漏洞通过发布,我现在突然遇到了一些UITextFields问题。

我有一个允许input的文本框,当你按下“locking”button时,它会调用:

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

该字段“隐藏”,但仍然像一个标签 – 应用程序的重要function。

然后再次按下“locking”button,它会调用:

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

这在4.2 / 4.3中是完美的,但在iOS 5中,唯一出现的是没有白色背景色的文本框的斜面轮廓。

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

我没有看到API差异文档中的这些更改的任何内容,我在这里丢失了什么? 提前致谢..

如果你对白色背景没问题,我把这个注释修正了,指定了一个背景颜色,并将opaque属性设置为NO

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

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

-Alex

userInteractionEnabled是更通用的UIView类的属性,因此可能不像UIControl子类所期望的那样工作,如UITextField 。 相反,您应该将enabled属性设置为NO来临时禁用一个控件,在UITextField的情况下,它将按照您的要求进行操作。

一个可能的解决办法是将alpha设置为0.00001 。 这给你有效的隐藏标签,仍然可以响应控制事件。

我有一个类似的问题,UITextBorderStyleNone在iOS 4.3中工作正常,但在iOS 5上停止工作。 我认为这是来自Apple的一个错误,因为它在设备和模拟器上都不起作用。 我认为你最好的办法就是在标签和文本字段之间切换,就像darvids0nbuild议直到苹果解决这个错误一样。