2012-01-23 17 views
0

入力が白い背景と赤い背景を持つサインインフォームがあります。それぞれUITextFieldのバックグラウンドを手動で変更する代わりに、UITextFieldを拡張して追加の機能を追加するか、またはの方が良いでしょうか方法はありますか?ios UITextField拡張(サブクラス)

また、私がカスタムUITextFieldを行う場合、そこにはInterface Builderでそれを使用する方法はありますか?

答えて

6

あなたの機能を実装するUITextFieldサブクラスを作成します。その後、Interface Builderで、UITextFieldをビューにドラッグするたびに、そのインスペクタのクラスをUITextFieldサブクラスに設定します。

通常のUITextFieldのようにIBで設定することはできますが、IBではそれほど違って見えることはありませんが、アプリが実行されるとカスタム背景色になります。

Interface Builderで使用するテキストフィールドをサブクラス化する場合は、initWithFrameメソッドの代わりにinitWithCoderメソッドまたはawakeFromNibメソッドを実装する必要があります。そうしないと、作成時にカスタムセットアップコードが実行されません。ペン先

また、IBではサブクラスのカスタムプロパティを設定できないため、赤いテキストフィールドと青色のテキストフィールドが必要な場合は、使用する場合は2つのサブクラスを作成する必要がありますコード内でそのプロパティを設定する必要はありません。

更新:IBでカスタムプロパティを設定できないということは、もはや真実ではありません。 「インスペクタ」の「ユーザ定義のランタイムアトリビュート」パネルを使用できるようになりました。

+0

ユーザー定義ランタイムアトリビュートを使用すると、iOS 5などをターゲットにしている場合は、コードなしでいくつかのプロパティを設定できます。また、実際の検証を行うにはNSFormatterを確認してください。 –

+0

@NickLockwood 'UITextField'のようなものをサブクラス化するとき、何が実行される初期化関数(別名コンストラクタ)ですか? – Jacksonkr

+1

私が言ったように、Interface Builderを使用して作成する場合はinitWithCoderですが、代わりにawakeFromNibを使用すると簡単です。 awakeFromNibは、initメソッドの後に呼び出されます。 –

関連する問題