MFMailComposeViewControllerの電子メール本文の編集を制限するビジネスルールがあります。コンテンツは事前設定されており、静的なままである必要があります。 UITextViewオブジェクトを取得し、それを無効にしたり、それらの行に沿って何かに設定することは可能ですか?MFMailComposeViewControllerの編集を無効にする
もう1つの考えは、UITextViewの上に透明なビューを表示して、相互作用を防止することでした。
アイデア?
MFMailComposeViewControllerの電子メール本文の編集を制限するビジネスルールがあります。コンテンツは事前設定されており、静的なままである必要があります。 UITextViewオブジェクトを取得し、それを無効にしたり、それらの行に沿って何かに設定することは可能ですか?MFMailComposeViewControllerの編集を無効にする
もう1つの考えは、UITextViewの上に透明なビューを表示して、相互作用を防止することでした。
アイデア?
いいえ、答えがありませんプライベートAPIを使わずに。
私は次のコードでそれを行うことができました。それはIVAR mailBodyView
を設定するように
- (void) getMFComposeBodyFieldViewFromView:(UIView *)view {
for (UIView *item in view.subviews) {
if ([[[item class] description] isEqualToString:@"MFComposeTextContentView"]) {
self.mailBodyView = item;
break;
}
if([item.subviews count] > 0) {
[self getMFComposeBodyFieldViewFromView:item];
}
}
}
そして上記メソッドを呼び出し、次にからMFComposeBodyField
継承するUIWebDocumentView
に_setEditable:
メソッドを呼び出します。
[self getMFComposeBodyFieldViewFromView:mailComposeViewController.view];
[self.mailBodyView setEditable:NO];
これは、キーボードがまだ表示され、あなたはまだ周りにカーソルを移動して物事を選択することができますが、それは間違いなく編集からユーザーを防ぐため、相互作用は一種のファンキーである、体内のコンテンツは編集できないことにします。
UPDATE
私はMFComposeBodyField
の親であるMFComposeTextContentView
を探すために、コードを更新し、私はより良い解決策、来てからキーボードを防止し、そのオブジェクトにsetEditable:
を呼びます!
申し訳ありませんが、これは不可能であり、ヒューマンインタフェースガイドラインに違反しています。つまり、あなたのアプリケーションはこれを拒否される可能性があります。私の唯一のアドバイスは、カスタム電子メールビューコントローラを作成し、Appleが提供したものを使用する代わりにこれを実装することです。
アプリストアの承認は必要ありません。エンタープライズアカウントを使用してインハウスを配信しています。 –
電子メールがデバイスのユーザーのアカウントから発信される必要がない場合は、MFMailComposerViewControllerを使用しないで自分のサーバーから電子メールを送信することができます。このような場合には、あなたのアプリがWebサービスと対話するようにすることもできます。
これはMFMailComposeViewControllerでは不可能です。すべてのコンテンツがあらかじめ定義されているメールを送信する場合は、SMTP接続を行い、自社の企業メールサーバーを使用して自分でメールを送信するだけです。
どのようなタイプの変数はself.mailBodyViewですか? –
このコードにアクセスすることができなくなったので、 '@class MFComposeTextContentView;でクラスを前方宣言することで達成できるはずの' UIView'または 'MFComposeTextContentView'だったと思います。 –