いくつConfigureViewController
かの UIButton と を含む がありますUITextField * MyTextField
。各ボタンを押すと、 を使用してダイアログ スタイルのビュー コントローラーが表示されpresentViewController:animated:completion:
ます。ただし、テキスト フィールドの編集中にこれらのボタンのいずれかをタップすると、ダイアログを閉じて元の画面に戻ったときに、テキスト フィールドにフォーカスを戻したり入力したりすることができません。
ボタンがタップされたときに呼び出されるメソッドです。
-(void)AdvancedInfoButtonPressed :(id)sender
{
AdvancedInfoPopViewController *myAdvancedInfoViewController = [[AdvancedInfoPopViewController alloc] init];
[myAdvancedInfoViewController setDelegateAndDevice :self :Current_Device];
myAdvancedInfoViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController :myAdvancedInfoViewController animated :NO completion :nil];
}
からフォーカスを明示的に削除せずにMyTextField
、 を表示AdvancedInfoViewController
すると、キーボードが自動的に閉じられます。
問題は、MyTextField
(キーボードと点滅カーソルが消えても) まだフォーカスがあると考えているため、最初のレスポンダーになれないことだと思います。これらの行に沿って[MyTextField resignFirstResponder]
、ダイアログビューコントローラーを表示する前に追加すると、問題が解決することがわかりました。
ただし、このテキストフィールド (またはその他のテキストフィールド) を最初の応答者としていくつかの場所で忘れないようにする必要があるため (保守が困難なコードにつながる)、これはあまり良い解決策とは思えません。私の質問は: がConfigureViewController
部分的に隠されようとしているAdvancedInfoViewController
とき (またはAdvancedInfoViewController
が却下され、フォーカスが に戻されたときConfigureViewController
) にフックできるイベントはありMyTextField
ますか?
私は試してみましviewWillDisappear
たviewWillAppear
が、 で呼び出されることはありませんConfigureViewController
。
また、テキスト フィールドのデリゲートに textFieldDidEndEnding を追加しようとしましたが、呼び出されたにもかかわらず、問題は解決しませんでした。
-(void)textFieldDidEndEditing:(UITextField *)textField
{
[MyTextField resignFirstResponder];
}