10

MFMailComposeViewController で [送信] ボタンまたは [キャンセル] ボタンを押さずにキーボードを閉じるにはどうすればよいですか?!

助けてくれてありがとう。

4

3 に答える 3

5

これを試すことができますか。

UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];

お役に立てれば....

于 2011-06-08T05:20:07.527 に答える
5

同様の問題が発生しました。何らかの理由で、アプリケーションがバックグラウンドに入ったときに iOS が MFMailComposeViewController のキーボードを閉じません (アプリケーションが再びアクティブになったときに閉じられます)。ただし、ファーストレスポンダーが単純な要素 (textview など) の場合、iOS はキーボードを閉じます。この特定のケースでは、resignFirstResponder を呼び出してもうまくいきませんでした。applicationBecomeActive (ログイン画面を表示するため) でウィンドウを切り替えるため、複数のキーボードが互いに重なってしまいました (一番上のキーボードは機能しません)。アプリケーションがアクティブのままになったときに、MFMailComposeViewController のキーボードを閉じる簡単な回避策を見つけました。

- (void)applicationWillResignActive:(UIApplication *)application
{
    // Workaround: MFMailComposeViewController does not dismiss keyboard when application enters background
    UITextView *dummyTextView = [[UITextView alloc] init];
    [self.window.rootViewController.presentedViewController.view addSubview:dummyTextView];
    [dummyTextView becomeFirstResponder];
    [dummyTextView resignFirstResponder];
    [dummyTextView removeFromSuperview];
    // End of workaround
}

現在提示されているviewControllerがある場合、これは暗黙的にファーストレスポンダーを辞任します。

于 2013-06-20T07:22:43.177 に答える
2

ファーストレスポンダーであるビューを見つけて呼び出すことでおそらくそれを行うことができますがresignFirstResponder(iPad を使用していて、MFMailComposeViewController が UIModalPresentationFormSheet を使用している場合を除く)、Apple はアプリを拒否する可能性があります。ドキュメントを引用します:

重要:メール作成インターフェース自体はカスタマイズできないため、アプリケーションで変更しないでください。

これは、キーボードの動作を含むと簡単に解釈できます。

于 2011-06-08T10:23:03.693 に答える