iOS 9 で非常に残念なバグに遭遇しました。 を設定するUITextField.inputAccessoryViewと、そのビューviewWillDisappear:とviewDidDisappear:メソッドが時期尚早に (キーボードのアニメーションが終了した直後に) 呼び出されるようです。
問題を示すためにgifを含めました。ビューが赤くなるのは、そのviewWillDisappear:メソッドが呼び出されたときです。奇妙なことに、キーボードを閉じるviewWillDisappear:と、viewDidDisappear:再び呼び出されます。ただし、viewWillAppear:一度だけ呼び出されます。
誰かが同様の問題に遭遇しましたか? と を使用viewWillDisappear:しviewDidDisappear:てコントローラーを緩めますが、明らかに初期の呼び出しが望ましくない動作を引き起こしています。
注: 以下は、アクセサリ ビューを作成して設定する方法です。AccessoriesViewController.m には特筆すべき点はありません。クリーンなプロジェクトで問題を再現しました。また、iOS 8 には存在しません。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
if (self.textField.inputAccessoryView == nil) {
self.textField.inputAccessoryView = self.vc.view;
}
return YES;
}
- (UIViewController *)vc {
if (!_vc) _vc = [[AccessoryViewController alloc] init];
return _vc;
}
