エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

UITextFieldで編集中に別のやつにフォーカスさせると色がヘンになる

画面上にUITextFieldが複数あって何文字入力したら次のfieldにジャンプする、みたいな事をしたい場合このようにした。

#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [_first addTarget:self
                   action:@selector(textFieldDidChange:)
         forControlEvents:UIControlEventEditingChanged];
    [_second addTarget:self
                    action:@selector(textFieldDidChange:)
          forControlEvents:UIControlEventEditingChanged];
}

- (void)textFieldDidChange:(id)sender
{
    if (sender == _first) {
        [_second becomeFirstResponder];
    }
}

でもこれだとジャンプ後のfieldでヘンな色がついてしまう。

f:id:J_ogawa:20140821192344p:plain

そこで、ジャンプ後のfieldで文字入力後にフォーカスを外してから付けるという風に書いてみた。

- (void)textFieldDidChange:(id)sender
{
    if (sender == _first) {
        [_second becomeFirstResponder];
    } else if (sender == _second) {
        [_second resignFirstResponder];
        [_second becomeFirstResponder];
    }
}

f:id:J_ogawa:20140821192500p:plain

これなら色がつかない。(ちゃんと分かっていない)