2011-12-18 18 views
0

MFMailComposeViewControllerが付いているキーボードは、一度キーボードが表示されたら、それを解消する手段がありません。 誰でもキーボードを変更する考えはありますか?その時点でメールクライアントに実際にいるので、UITextFieldは公開されていません。MFMailComposeViewController iphoneキーボードに完了またはキャンセルがありません

+0

あなたはこれをするのがなぜ気になるのですか。共通の要件ではないため、簡単ではありません。 –

答えて

0

MFMailComposeViewControllerには、そのボタンをリターンキーとして使用して新しい行を作成することを前提としているため、「完了」ボタンはありません。

あなたが本当に「完了」ボタンにボタンを変更したい場合は、私はそれを行うに考えることができる唯一の方法があります:

  1. は新しいMFMailComposeViewControllerを作成します。
  2. [[mailComposerビュー]サブビュー]を通じて列挙します。
  3. 各サブビュー(および必要に応じてサブビューのサブビュー)を検査します。あなたが体であるUITextViewを見つけた
  4. は、次の操作を行います。-textViewShouldEndEditing上

    // Get the UITextView from subview inspection 
    UITextView *textView; 
    
    // Declare this instance variable in your class @interface 
    id <UITextViewDelegate> originalTextViewDelegate; 
    
    // Get the original delegate 
    originalTextViewDelegate = [textView delegate]; 
    
    // Override the delegate 
    [textView setDelegate:self]; 
    
    // Set the return key type 
    [textView setReturnKeyType:UIReturnKeyDone]; 
    
  5. 戻りYES。 ALL UITextViewDelegateメソッドを実装し、originalTextViewDelegate(サブクラスで "super"を呼び出すようなもの)を呼び出します。

    - (BOOL)textViewShouldEndEditing:(UITextView *)textView 
    { 
        [originalTextViewDelegate textViewShouldEndEditing:textView]; 
        // Important: return YES, regardless of originalTextViewDelegate's response 
        return YES; 
    } 
    
    - (void)textViewDidChangeSelection:(UITextView *)textView 
    { 
        [originalTextViewDelegate textViewDidChangeSelection:textView]; 
    } 
    
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
    { 
        return [originalTextViewDelegate textView:textView shouldChangeTextInRange:range replacementText:text]; 
    } 
    
    // etc 
    
  6. 動作するはず

、ない保証。希望が助けてくれる! :D

+0

メッセージ本文はUITextContentViewです。これはプライベートクラスです。ただし、キーボードコントロールを許可するUITextInputTraitsプロトコルに準拠しています。 – Isabel

+0

ありがとうございます。私は、MFMailComposeViewControllerのすべてのコードを見て、ouldはUITextコントロールへの参照を見つけられません。 カーソルは、任意のフィールドにカーソルを置いたときに電子メールを非表示にすることはできません。 iPhoneでは、画面が上にスクロールせずにメールの残りの部分が表示されます。 VCの監督のようだ。 おそらくナビゲータにボタンを配置しますか? – cavuco

1

メールコンポーザーが、それはあなたが明示的にドキュメントに変更しないように言われ、システム提供のビューコントローラである、あなたが変更することはない。重要

:メール作成インターフェースそのものではありませんカスタマイズ可能で、アプリケーションで変更してはいけません。また、インターフェースを提示した後で、アプリケーションは電子メールの内容をさらに変更することはできません。ユーザーは引き続きインターフェイスを使用してコンテンツを編集できますが、プログラムによる変更は無視されます。したがって、インターフェイスを表示する前に、コンテンツフィールドの値を設定する必要があります。

キャンセルボタンは既に左上にありますが、「完了」とは何ですか?メールを送信しますか?それは右上にあります。

関連する問題