2016-05-18 15 views
2

私のアプリでは、テキストメッセージの履歴を表示する必要があります。私はMFMessageComposeViewControllerを表示することができますが、キーボードはそこに表示されます。これは私が今必要ではないものです。ユーザーはジェスチャーで非表示にできますが、プログラムで非表示にしたいと考えています。隠しキーボードでMFMessageComposeViewControllerを表示

私はこれを行う方法を見つけることができませんが、別のアプリ(その名前は 'Mobilnéplatby')で見たように、私はそれが可能であると確信しています。

ありがとうございます! MFMessageComposeViewControllerviewDidload

+0

'[[のUIApplication sharedApplication] sendActionをお試しください:@selector(resignFirstResponder)to:nil from:nil forEvent:nil];または '[yourMessageComposeViewController.view setEndEditing:TRUE];'? – Larme

+0

sendActionは何もしていません。 2番目の可能性として、あなたはおそらく[yourMessageComposeViewController.view endEditing:TRUE]を意味します。それは真実ですが、キーボードはまだそこにあります。 – Reconquistador

答えて

0

viewDidAppear

アップデートでそれを試して、その後動作していない場合は、最後に

[self.view endEditing:YES]; 

を追加します。

Apple documentationとしての状態、

このView Controllerによって表示されるビュー階層は変更しないでください。ただし、UIAppearanceプロトコルを使用して、インターフェイスの外観をカスタマイズすることはできます。

アップルのマニュアルを参照してください。またthis answerも参照できます。

だから、ビュー階層を変更することはできません。MFMessageComposeViewControllerです。あなたはただ単に呼び出すendEditingが機能していない場合、これは:)

+0

それはシステムクラスなので、私はサブクラスを作成し、これをviewDidLoadとviewDidAppearの両方で試しました。どちらもTRUEを返すが、悲しいことに効果がない。 – Reconquistador

+0

このビューコントローラを提示している場合は、 – Lion

+0

の完了ハンドラを試してみてください。このようにして完了ハンドラを試しました: [self presentViewController:compアニメーション:YES完了:^ { ブールテスト= [comp.view endEditing:YES ]; NSLog(@ "4:%i"、test); }]; 「4:1」と記録されますが、キーボードはまだ存在します。 – Reconquistador

0

を助ける外観

希望を変更することができます。あなたがメールComposerはその直下の行を書き開くためのボタンをタップしている場合 :

[self performSelector:@selector(function) withObject:nil afterDelay:2]; 

とあなたの関数は次のようになります。あなたはこのトリックを試すことができます

- (void)function 
{ 
    [self.view endEditing:YES]; 
} 
+0

これは、私がコンポーザーを開いた場所(didSelectRowAtIndexPathにありますが、これまたはボタンタップかどうかは関係ありません)とMFMessageComposeViewController viewDidAppearのサブクラスの両方で試してみました。どちらの場合も、endEditingはtrueを返しますが、キーボードはまだそこにあります。 – Reconquistador

関連する問題