1

ファイルにTextfieldsを含むアプリケーションがありMainViewController.mます。そのファイルにはスクロールビューも含まれているため、キーボードが起動すると、ビューがスクロールして、ユーザーがテキストフィールドを表示できるようになります。ユーザーが画面をタップすると、キーボードが閉じられます。ユーザーがホームボタンを押してアプリをバックグラウンドに置いてから戻ってきた場合を除いて、すべてが正常に機能しています。この場合、キーボードはまだ上にありますが、私のスクロールビューは下にあり、テキストフィールドは非表示になっています。理想的には、キーボードも閉じてもらいたいです。

調べてみると、呼び出されるメソッドはすべてAppDelegate.mファイル内にあります(残念ながら、ViewDidLoadまたはViewライフサイクルメソッドのいずれにも入りません)。AppDelegate.mファイルのapplicationDidEnterBackgroundからキーボードを閉じるにはどうすればよいですか?私は一種の初心者です-MainViewControllerファイルで+dismisskeyboard関数を作成し、それをAppdelegateから呼び出しようとしましたが、テキストフィールドはすべてインスタンス変数であり、機能しません。また、AppDelegateファイルにテキストフィールドを作成してからこれを実行しようとしました-

[_someFieldbecomeFirstResponder];

[_someField resignFirstResponder];

しかし、これも機能しません...ストーリーボード上の何かをsomeFieldのAppDelegateプロパティにリンクする方法がわかりません。

誰かがこの問題に取り組むための正しいアプローチを提案できますか?

4

1 に答える 1

3

クラスにメソッドを登録し、UIApplicationDidEnterBackgroundNotificationそこでMainViewControllerキーボードを閉じるだけです。例:
通知登録

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name:UIApplicationDidEnterBackgroundNotification object:nil];


次に、このメソッドを追加します

- (void) receivedNotification:(NSNotification *) notification
{
    [txtFld resignFirstResponder];
}
于 2012-02-07T14:58:04.660 に答える