入力が白い背景と赤い背景を持つサインインフォームがあります。それぞれUITextField
のバックグラウンドを手動で変更する代わりに、UITextField
を拡張して追加の機能を追加するか、またはの方が良いでしょうか方法はありますか?ios UITextField拡張(サブクラス)
また、私がカスタムUITextField
を行う場合、そこにはInterface Builder
でそれを使用する方法はありますか?
入力が白い背景と赤い背景を持つサインインフォームがあります。それぞれUITextField
のバックグラウンドを手動で変更する代わりに、UITextField
を拡張して追加の機能を追加するか、またはの方が良いでしょうか方法はありますか?ios UITextField拡張(サブクラス)
また、私がカスタムUITextField
を行う場合、そこにはInterface Builder
でそれを使用する方法はありますか?
あなたの機能を実装するUITextFieldサブクラスを作成します。その後、Interface Builderで、UITextFieldをビューにドラッグするたびに、そのインスペクタのクラスをUITextFieldサブクラスに設定します。
通常のUITextFieldのようにIBで設定することはできますが、IBではそれほど違って見えることはありませんが、アプリが実行されるとカスタム背景色になります。
Interface Builderで使用するテキストフィールドをサブクラス化する場合は、initWithFrameメソッドの代わりにinitWithCoderメソッドまたはawakeFromNibメソッドを実装する必要があります。そうしないと、作成時にカスタムセットアップコードが実行されません。ペン先
また、IBではサブクラスのカスタムプロパティを設定できないため、赤いテキストフィールドと青色のテキストフィールドが必要な場合は、使用する場合は2つのサブクラスを作成する必要がありますコード内でそのプロパティを設定する必要はありません。
更新:IBでカスタムプロパティを設定できないということは、もはや真実ではありません。 「インスペクタ」の「ユーザ定義のランタイムアトリビュート」パネルを使用できるようになりました。
ユーザー定義ランタイムアトリビュートを使用すると、iOS 5などをターゲットにしている場合は、コードなしでいくつかのプロパティを設定できます。また、実際の検証を行うにはNSFormatterを確認してください。 –
@NickLockwood 'UITextField'のようなものをサブクラス化するとき、何が実行される初期化関数(別名コンストラクタ)ですか? – Jacksonkr
私が言ったように、Interface Builderを使用して作成する場合はinitWithCoderですが、代わりにawakeFromNibを使用すると簡単です。 awakeFromNibは、initメソッドの後に呼び出されます。 –