入力を開始するときではなく、フィールドにフォーカスすると表示UITextField
されるので、少なくとも1つの文字が含まれている場合にのみ、正しいビューを表示できる方法があるかどうか疑問に思いUITextFieldViewModeWhileEditing
ました。
UITextFieldDelegate
ユーザーが入力しているときにトリガーされるメソッドの1つで、を実装して実行することしかできませんでした。ここでの唯一の問題は、テキストフィールドを作成してビューに追加したら、テキストフィールドのデリゲートを別のデリゲートに変更することです。これは、サブクラス化によってカスタムテキストフィールドを作成し、UITextField
それをさまざまな場所で初期化し、それらのさまざまな場所で、開始された現在の場所にデリゲートを割り当てるためです。
これがより良いアイデアです。UITextFieldは変更通知を投稿します。サブクラスは次のように自分自身を監視できます。
// in RSSUITextField.m
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(textFieldChanged:)
name:UITextFieldTextDidChangeNotification
object:self];
次にtextFieldChanged:
、そこにrightViewの状態を実装して変更します。この答えは私が残した他の答えよりも優れていますが、それも機能するので削除しません。これは、コントロールが気になる状態の変化に関する通知を投稿しない場合に役立つテクニックです。
RSSUITextFieldの各インスタンスはNSNotificationCenterで自分自身を監視するため、重要でなくなったときに、それぞれがオブザーバーとして自分自身を削除する責任があります。これを行うための最新の可能な時間はdeallocです...
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加