UITextField のカスタム クリア ボタンを作成する必要があります (配色のため)。私は次のコードを使用しています (クラスは UITextField の子孫です):
UIButton *clearButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
[clearButton setImage:[UIImage imageNamed:@"ClearButton.png"] forState:UIControlStateNormal];
[self setRightView:clearButton];
[self setRightViewMode:UITextFieldViewModeNever];
[clearButton addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside];
ほとんどの場合、これで問題なく動作します。問題は、クリア ボタンをクリックすると、UITextField がファーストレスポンダ ステータスを辞任する (つまり、キーボードが消える) ことです。UITextField がフォーカスを保持するようにしたいと思います。
クリアボタンのアクションで最初の応答者のステータスを復元しようとしましたが、UITextField が UITableView にあり、スクロールされている場合、キーボードが閉じて開くと、テーブルに望ましくないスクロールが発生します。
UIButton の代わりに UIImageView を使用できますが、ボタンがタップされたときに視覚的な「パルス」が得られません。
では、ボタンが押されたときに UITextField がファーストレスポンダのステータスを保持する方法はありますか?
iOS 6 を使用して iPhone アプリを開発しています。
[注: 「クリア:」アクション ターゲットはテキスト フィールドを空にするだけですが、とにかく、ターゲットを設定しなくても問題が発生します。]