14

मैं अपने ऐप में इन-ऐप ईमेल के लिए MFMailComposeViewController का उपयोग कर रहा हूं, लेकिन मैं शीर्षक को बदलने में सक्षम नहीं हूं। डिफ़ॉल्ट रूप से यह शीर्षक में विषय दिखा रहा है, लेकिन मैं शीर्षक को कुछ और करने के लिए सेट करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?MFMailComposeViewController का शीर्षक बदलें

मैं कोशिश की है:

controller.title = @"Feedback"; 

लेकिन यह काम नहीं किया।

- (IBAction)email { 
    NSArray *array = [[NSArray alloc] initWithObjects:@"[email protected]", nil]; 
    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 
    [[controller navigationBar] setTintColor:[UIColor colorWithRed:0.36 green:0.09 blue:0.39 alpha:1.00]]; 
    controller.mailComposeDelegate = self; 
    controller.title = @"Feedback"; 
    [controller setSubject:@"Long subject"]; 
    [controller setMessageBody:@"" 
         isHTML:NO]; 
    [controller setToRecipients:array]; 
    [self presentModalViewController:controller animated:YES]; 
    [controller release]; 
    [array release]; 
} 

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { 
    [self becomeFirstResponder]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

उत्तर

21

आप अपने एमएफमेल कॉमपॉइस व्यू कंट्रोलर के लिए एक अलग लाइन सेट कर सकते हैं, जैसे कि।

... 
[self presentModalViewController:controller animated:YES]; // Existing line 
[[[[controller viewControllers] lastObject] navigationItem] setTitle:@"SomethingElse"]; 
... 

हालांकि, इस कार्यान्वयन को प्रभावी ढंग से MFMailComposeViewController की गैर-दस्तावेजी सुविधाओं पर निर्भर करता है। आप एक निजी वर्ग (_MFMailComposeRootViewController) के नेविगेशन Item तक पहुंच रहे हैं और मेल शीर्षक के अलावा किसी अन्य चीज़ को अपना शीर्षक बदल रहे हैं। मैं आर्ट गिलेस्पी की भावना को प्रतिबिंबित करता हूं कि को यह नहीं करना चाहिए और इस तरह कुछ करने के लिए ऐप्पल समीक्षकों द्वारा अस्वीकार करने की संभावना है। इसके अलावा, यह प्रक्रिया आईफोन ओएस की किसी भी मामूली बिंदु रिलीज में पूरी तरह से बदल सकती है, संभवतः आपके उपयोगकर्ताओं के लिए क्रैश होने तक, जब तक आप व्यवहार को ठीक करने के लिए कोई अपडेट जारी नहीं कर लेते।

निर्णय आपके ऊपर है, और यदि आप अभी भी इन अनुशंसित कदम उठाना चाहते हैं, तो आप इसे कैसे करते हैं।

+1

धन्यवाद, बस यह जानना चाहता था कि ऐसा कुछ कैसे करें। कुछ और लोगों के साथ बात करने के बाद, मैंने ईमेल के विषय को फिट करने के लिए कुछ तय करने का फैसला किया है। वैसे भी, धन्यवाद :) –

+2

को 'नियंत्रक.topViewController.navigationItem.title = @" SomethingElse "के रूप में लिखा जा सकता है;' – user102008

+0

यह समाधान आईओएस 8 पर मेरे लिए काम नहीं कर रहा है - शीर्षक –

14

MFMailComposeViewController कक्षा संदर्भ से::

महत्वपूर्ण: मेल रचना इंटरफेस अनुकूलन योग्य नहीं है और अपने आवेदन के द्वारा संशोधित नहीं होना चाहिए

यहाँ मेरी कोड है। इसके अतिरिक्त, इंटरफ़ेस पेश करने के बाद, आपके एप्लिकेशन को ईमेल सामग्री में और परिवर्तन करने की अनुमति नहीं है।

+1

मुझे पता है, लेकिन मेरा सवाल यह नहीं था कि यह अनुमति दी गई थी, मेरा सवाल था; क्या यह संभव है? और कैसे?;-) –

+9

यह अभी भी आपके प्रश्न का एक प्रासंगिक प्रतिक्रिया है, क्योंकि आईफोन पर निजी एपीआई का उपयोग करना बेहद निराश है। यहां तक ​​कि यदि यह संभव है, तो यह जानना उचित है कि यह कार्रवाई का सुझाया गया कोर्स नहीं है। –

+1

ठीक है, शायद आपका अधिकार है, लेकिन मुझे अभी भी यह जानना अच्छा लगता है :) –

0

सबसे अधिक संभावना है कि आपको कच्चे UINavigationBar को ढूंढने के लिए दृश्य पदानुक्रम में खोदना होगा जिसमें शीर्षक है, और मैन्युअल रूप से उस पर शीर्षक सेट करें।

प्रोग्राम क्लास-डंप उपयोग की जाने वाली सटीक कक्षाओं को निर्धारित करने के लिए यहां आसानी से आ सकता है। परीक्षण, त्रुटि, और एक डीबगर सबसे अधिक संभावना है कि आपकी सबसे अच्छी शर्त है।

2

आपको केवल एक दृश्य (नियंत्रक.दृश्य) लेने में सक्षम होना चाहिए और इसे अपने नियंत्रक के अंदर रखना चाहिए ... उस पल में, आप कुछ भी संशोधित नहीं कर रहे हैं और आप वास्तव में लगभग उसी चीज को ऐप्पल की तरह कर रहे हैं ईमेल लिखते समय आईपैड ईमेल ऐप ... एक ही चीज़ आईफोन पर भी काम करनी चाहिए ...

2

स्क्रब्रेट का जवाब बहुत अच्छा काम करता है।

// existing 
[self presentModalViewController:controller animated:YES]; 

// new code 
CGRect frame = CGRectMake(0, 0, 320, 44); 
UILabel *label = [[UILabel alloc] initWithFrame:frame]; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont fontWithName:@"MarkerFelt-Thin" size:18.0]; 
label.adjustsFontSizeToFitWidth = YES; 
label.minimumFontSize = 12.0; 
label.textAlignment = UITextAlignmentCenter; 
label.textColor = [UIColor darkGrayColor]; 
label.text = @"Your Comments"; 
[[[[controller viewControllers] lastObject] navigationItem] setTitleView:label]; 

एक ही टिप्पणी के रूप में ऊपर, यह वास्तव में MFMailComposeViewController अनुकूलित करने के लिए अनुशंसित नहीं है ...

3

ऐसा लगता है कि संदेश के विषय के शीर्षक फ़ीड: यह (लेबल) एक शीर्षक दृश्य जोड़ने के लिए कैसे है आईओएस में MFMailComposeViewController 8.

संबंधित मुद्दे