2012-01-23 71 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。 –