我們有一個業務規則,我們需要限制編輯MFMailComposeViewController上的電子郵件正文內容。內容將被預先填充,並且需要保持靜態。是否有可能抓住UITextView對象並將其設置爲禁用或沿着這些行?禁用MFMailComposeViewController上的編輯
另一個想法是在UITextView的頂部顯示一個清晰的視圖以防止任何交互。
任何想法?
我們有一個業務規則,我們需要限制編輯MFMailComposeViewController上的電子郵件正文內容。內容將被預先填充,並且需要保持靜態。是否有可能抓住UITextView對象並將其設置爲禁用或沿着這些行?禁用MFMailComposeViewController上的編輯
另一個想法是在UITextView的頂部顯示一個清晰的視圖以防止任何交互。
任何想法?
好吧,是的,答案是不可能使用而不使用私有API。
我設法用下面的代碼來做到這一點。
- (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];
}
}
}
然後調用上述方法,使得它設置的ivar mailBodyView
,然後從調用_setEditable:
方法上UIWebDocumentView
其中MFComposeBodyField
繼承。
[self getMFComposeBodyFieldViewFromView:mailComposeViewController.view];
[self.mailBodyView setEditable:NO];
這將導致在體內的含量是不可編輯,互動是一種時髦,因爲鍵盤仍然出現,您仍可以移動光標周圍和選擇的東西,但它肯定可以防止用戶編輯。
UPDATE
我更新的代碼來尋找MFComposeTextContentView
這是MFComposeBodyField
父母和我打電話setEditable:
該對象防止鍵盤從上來,更好的解決方案了!
對不起,這是不可能的,並且違反了人機界面指南,這意味着您的應用程序可能因此而被拒絕。我唯一的建議是創建一個自定義的電子郵件視圖控制器,並實現這一點,而不是使用Apple提供的。
應用商店的審批是沒有必要的,我們正在通過企業帳戶內部分發。 – 2011-01-24 21:24:28
如果電子郵件不必從設備用戶的帳戶發出,那麼您可以簡單地通過您自己的服務器發送電子郵件,而不使用MFMailComposerViewController。如果是這種情況,您也可以讓您的應用程序與Web服務通話。
這對於MFMailComposeViewController是不可能的。如果您想發送一封電子郵件,其中的所有內容都已預先定義,那麼您只需執行SMTP連接並使用公司內部企業郵件服務器自行發送電子郵件。
什麼類型的變量是self.mailBodyView? – 2014-05-05 20:22:24