MFMailComposeViewController で [送信] ボタンまたは [キャンセル] ボタンを押さずにキーボードを閉じるにはどうすればよいですか?!
助けてくれてありがとう。
MFMailComposeViewController で [送信] ボタンまたは [キャンセル] ボタンを押さずにキーボードを閉じるにはどうすればよいですか?!
助けてくれてありがとう。
これを試すことができますか。
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
お役に立てれば....
同様の問題が発生しました。何らかの理由で、アプリケーションがバックグラウンドに入ったときに 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がある場合、これは暗黙的にファーストレスポンダーを辞任します。
ファーストレスポンダーであるビューを見つけて呼び出すことでおそらくそれを行うことができますがresignFirstResponder
(iPad を使用していて、MFMailComposeViewController が UIModalPresentationFormSheet を使用している場合を除く)、Apple はアプリを拒否する可能性があります。ドキュメントを引用します:
重要:メール作成インターフェース自体はカスタマイズできないため、アプリケーションで変更しないでください。
これは、キーボードの動作を含むと簡単に解釈できます。