2012-01-23 37 views
0

我有一个输入有白色背景和红色背景的形式的标志。而不是手动更改每个UITextField有背景的背景,我可以扩展UITextField并添加一些额外的功能,或者是否有更好方式?ios UITextField扩展名(子类)

另外,如果我做一个自定义UITextField,有没有办法使用Interface Builder

回答

6

创建一个实现您的功能的UITextField子类。然后在Interface Builder中,只要将UITextField拖放到您的视图上,请将其Inspector中的类设置为您的UITextField子类。

您仍然可以像在普通UITextField中一样在IB中配置它,它在IB中看起来不会有任何不同,但是当您的应用程序运行时,它将具有您自定义的背景颜色。请记住,如果您要在Interface Builder中使用文本字段的子类,则需要实现initWithCoder或awakeFromNib方法而不是initWithFrame方法,否则当创建自定义设置代码时,它将不会运行笔尖。

此外,您将无法在IB中设置您的子类的任何自定义属性,因此如果您需要红色文本字段和蓝色文本字段,则需要创建两个独立的子类他们在IB中,而不需要在代码中设置它们的属性。

更新:您不能在IB中设置自定义属性。您现在可以使用检查器中的用户定义的运行时属性面板。

+0

使用用户定义的运行时属性,您可以设置一些没有代码的属性,前提是您的目标是iOS 5等。另外,请务必查看NSFormatter进行实际验证。 –

+0

@NickLockwood当继承类似'UITextField'的东西时,初始化函数run(又名构造函数)是什么? – Jacksonkr

+1

正如我所说,如果使用Interface Builder创建它,它就是initWithCoder,但是可以使用awakeFromNib来代替,这可能会更容易一些。在init方法之后调用awakeFromNib。 –