iOS6のtextViewDidChangeの謎挙動

UITextViewのデリゲートである

- (void)textViewDidChange:(UITextView *)textView


例えばTestViewControllerというUIViewControllerのサブクラスを作り、textViewDidChangeの中で

- (void)textViewDidChange:(UITextView *)textView {
    TestViewController *cnt = [[TestViewController alloc] init];
    [self.navigationController pushViewController:cnt animated:YES];
}

のように、もう一度TestViewControllerでアニメーションを伴うナビゲーションの画面遷移を行うと何故かtextViewDidChangeがもう一度呼ばれてしまうという動作になります。


回避例としては

- (void)textViewDidChange:(UITextView *)textView {
    textView.text = @"";
    TestViewController *cnt = [[TestViewController alloc] init];
    [self.navigationController pushViewController:cnt animated:YES];
}

で回避できるみたいです。


まぁ上記のようなコードを書くケースがそんなにあるかどうかはわからないですが…どなたかのお役にたてば。


ちなみに弊社アプリ「マイランキングノート」が上記動作の被害にあいまして(パスコードが設定できない)…現在修正対応中です。


無料iOSアプリ「マイランキングノート」はこちらからどうぞ!→http://click.linksynergy.com/fs-bin/stat?id=518LCL7QeLw&offerid=94348&type=3&subid=0&tmpid=2192&RD_PARM1=http%253A%252F%252Fitunes.apple.com%252Fjp%252Fapp%252Fmairankingunoto%252Fid530415108%253Fmt%253D8%2526uo%253D4%2526partnerId%253D30