2

このコードは何ヶ月も (iOS 5.1 で) うまく機能していましたが、長い間チェックしていなかったので (おそらく iOS 6.0 の問題)、メッセージ本文や受信者などのテキストフィールドに焦点を当てます。

奇妙なことに、タップに反応するので、「To」または「Subject」にカーソルを設定するとカーソルが表示されるか、タップを押したままにしてズーム グラスをポップアップさせることができます。しかし、キーボードはありません:(

これのスクリーンショット

私が使用しているコードは次のとおりです。

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;        
[self presentModalViewController:mailer animated:YES];


[self resignFirstResponder]私はこれについて多くのことを検索してきましたが、 orを扱うものを見つけました[mailer becomeFirstResponder]が、うまくいきませんでした。

コントローラーを提示する前または後にこのコードを追加すると

NSLog(@"mailer become %d", [mailer canBecomeFirstResponder]);

ただし0

NSLog(@"self resign %d", [self resignFirstResponder]);

が表示1されますが、追加する前は0多すぎました

- (BOOL)canResignFirstResponder {
    return YES;
}

ドキュメントはYES、デフォルトで返されるはずだと言っているので、二重に奇妙です。

そのようなコードで空のプロジェクトを作成するとうまくいきますが、現在のプロジェクトが非常に巨大であるため、実際にはできません。ここで立ち往生しています...

iPhone と iOS シミュレーターの両方でテスト済み (デプロイメント ターゲット 5.1 と 6.0 の両方)

4

3 に答える 3

2

ただ笑。問題は

[UIApplication sharedApplication] delegate] window] setWindowLevel:UIWindowLevelStatusBar + 1]

私のアプリのどこかに。iOS 6 でキーボードwindowLevelが変更されたようで、現在は遅れています。私はそうするのがかなり面倒ですがwindowLevel、キーボードウィンドウの正確な情報を知ることは興味深いでしょう:)
それには注意してください!

とにかく助けてくれてありがとう!

于 2012-12-13T16:52:44.903 に答える
1

キーボードを表示したい場合は、メーラーからテキスト ボックスを取得し、becomeFirstResponder というメッセージを送信する必要があります。

ただし、それを行う簡単な方法はありません。メッセージのボックスをタッチすると、キーボードが表示されますか?

于 2012-12-13T14:51:06.437 に答える
0

For others who may have come up with this keyboard issue in the MailComposer this solution worked for me:

  • Present the view then call "becomefirstResponder" on the same MFMailComposeViewController in the completion method.

    MFMailComposeViewController* mailCon = [[MFMailComposeViewController alloc] init]; [self presentViewController:mailCon animated:NO completion:^{ [mailCon becomeFirstResponder]; }];

于 2014-10-05T17:50:10.687 に答える