2013-09-30 9 views
22

में नहीं दिखाया गया है नीचे दिया गया कोड आईओएस 5/6 में ठीक काम करता है। आईओएस 7 में, ऐसा लगता है (जोर के लिए लाल अंडाकार)।MFMessageComposeViewController प्राप्तकर्ता फ़ील्ड आईओएस 7

enter image description here

कोड:

if ([MFMessageComposeViewController canSendText]) { 
    self.messageComposer = [MFMessageComposeViewController new]; 
    self.messageComposer.recipients = @[number]; 
    self.messageComposer.messageComposeDelegate = self; 
    [self presentViewController:self.messageComposer 
         animated:YES 
        completion:nil]; 
} 

प्रश्न: यह सरल कोड है। क्या कोई अन्य बाहरी संपत्ति है, शायद वर्तमान दृश्य नियंत्रक का, जो इसे प्रभावित कर रहा है? किसी के पास एक फिक्स या वर्कअराउंड है?

धन्यवाद।

उत्तर

20

मुझे पता चला है कि MFMessageComposeViewController का प्राप्तकर्ता फ़ील्ड आईओएस 7 में यूआईएनविगेशनबार उपस्थिति प्रॉक्सी से इसकी कुछ उपस्थिति लेता है।

  1. एक खाली कस्टम UINavigationController उपवर्ग, जो UINavigationController के तरीकों में से किसी पर हावी नहीं होता बनाएँ: इस हल करने के लिए, मैं अपने ऐप्लिकेशन में निम्न कार्य किया है।
  2. किसी भी नेविगेशन नियंत्रक है कि मैं, कस्टम उपस्थिति के लिए आईबी में पहचान निरीक्षक पर कस्टम वर्ग की स्थापना करके चाहते हैं के लिए एक मार्कर के रूप में इस कस्टम UINavigationController उपवर्ग का उपयोग करें:

    enter image description here

  3. मेरे ऐप प्रतिनिधि में

    [[UINavigationBar appearanceWhenContainedIn:[MyCustomNavigationController class], nil] ...]; 
    

यह सुनिश्चित करता है कि मैं navigati मिलती है:, इस तरह नेविगेशन बार की उपस्थिति की स्थापना बार उपस्थिति पर मैं उन नियंत्रकों में चाहता हूं जिन्हें मैं अनुकूलित करना चाहता हूं, लेकिन अन्य नियंत्रकों (जैसे MFMessageComposeViewController) में मानक नेविगेशन बार (और संबंधित) उपस्थिति को संरक्षित करता है। यहां एक स्क्रीनशॉट है; ध्यान दें MFMessageComposeViewController के मानक उपस्थिति, पृष्ठभूमि में पॉपओवर पर कस्टम नेविगेशन पट्टी उपस्थिति के साथ:

enter image description here

+0

यह आसान था। धन्यवाद। मैं पहले से ही 'UINavigationBar' के लिए उप-वर्ग का उपयोग कर रहा हूं इसलिए मैंने अपनी उपस्थिति सेटिंग्स को केवल इस navbar वर्ग' i.e पर लागू करने के लिए बदल दिया। [मायनवबार उपस्थिति] '। यह समस्या हल करता है। – XJones

+0

शानदार लेखन और समाधान - और वास्तव में भी लागू करने में आसान है! – daspianist

20

मैं एक ही समस्या का सामना करना पड़ा और यहाँ है मेरी समाधान-

अपने संदेश संगीतकार पेश करने से पहले ([self presentViewController:messageComposer animated:YES completion:nil];) सेट

[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

और प्रतिनिधि विधि

में
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller 
       didFinishWithResult:(MessageComposeResult)result { 
    UIImage *backgroundImage = [UIImage imageNamed:@"Navigation Bar"]; 
    [[UINavigationBar appearance] setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

सब कुछ है !!

+13

यह एक त्वरित और आसान काम के आसपास काम करता है - बस MFMessageComposeViewController – Tys

+1

को इनिट/आवंटित करने से पहले [UINavigationBar उपस्थिति] कोड स्निपेट को जोड़ना सुनिश्चित करें यह स्वीकार्य उत्तर होना चाहिए। – Blios