2011-12-18 51 views
0

MFMailComposeViewController的鍵盤一旦出現就沒有任何方法解除鍵盤。 有沒有人有更改鍵盤的想法。由於您當時在郵件客戶端中,因此沒有公開UITextFieldMFMailComposeViewController iphone鍵盤沒有DONE或CANCEL

+0

你應該多說一些你爲什麼喜歡這樣做。這並不容易,因爲這不是一個常見的要求。 – 2011-12-18 04:09:49

回答

0

MFMailComposeViewController沒有「完成」按鈕,因爲它假定您將使用該按鈕作爲返回鍵(創建一個新行)。

如果你真的想改變按鈕,一個「完成」按鈕,只有一個辦法,我能想到做到這一點:

  1. 創建一個新的MFMailComposeViewController。
  2. 枚舉通過[[mailComposer視圖]子視圖]。
  3. 檢查每個子視圖(以及子視圖的子視圖,如果需要的話)。
  4. 當你找到了UITextView的是身體,請執行下列操作:

    // 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上-textViewShouldEndEditing。實現所有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 
    

這應該工作,但沒有任何保證。希望有所幫助! :d

+0

消息體是一個UITextContentView,它是一個私有類。但是,它確實符合UITextInputTraits協議,它允許一些鍵盤控制。 – Isabel 2011-12-18 07:41:34

+0

謝謝。我查看了MFMailComposeViewController的所有代碼,並且找不到任何對UIText控件的引用。 只要將光標放在任何字段並且不能被解僱,他鍵盤就會隱藏電子郵件。在iPhone上,屏幕不會向上滾動以顯示電子郵件的其餘部分。看起來像是對風險投資的監督。 也許在導航器上放置一個按鈕? – cavuco 2011-12-18 14:22:42

1

郵件作曲家是不是你的修改,這是你被明確告知不要在文檔修改系統提供的視圖控制器:

重要提示:郵件撰寫界面本身不可自定義,不得由您的應用程序修改。另外,在呈現界面之後,您的應用程序不允許對電子郵件內容進行進一步更改。用戶仍然可以使用界面編輯內容,但程序化更改將被忽略。因此,您必須在呈現界面之前設置內容字段的值。

取消按鈕已經在左上角,「完成」會做什麼?發送電子郵件?這在右上角。