1

いくつ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ますか?

私は試してみましviewWillDisappearviewWillAppearが、 で呼び出されることはありませんConfigureViewController

また、テキスト フィールドのデリゲートに textFieldDidEndEnding を追加しようとしましたが、呼び出されたにもかかわらず、問題は解決しませんでした。

-(void)textFieldDidEndEditing:(UITextField *)textField
{
    [MyTextField resignFirstResponder];
}
4

1 に答える 1