9

MFMailComposeViewController में भेजें या रद्द करें बटन दबाए बिना कीबोर्ड को कैसे खारिज कर सकता हूं ?!MFMailComposeViewController कीबोर्ड समस्या

किसी भी मदद के लिए धन्यवाद।

+3

जिज्ञासा से, आप क्यों चाहेंगे? – PengOne

+0

7KV7 द्वारा सुझाए गए कोड का उपयोग करने के कारण आज मेरा ऐप खारिज कर दिया गया था। बस इतना है कि आप ऐप स्टोर पर ऐप्स में इसका उपयोग न करें। –

उत्तर

6

क्या आप इसे आजमा सकते हैं।

UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 
[firstResponder resignFirstResponder]; 

आशा है कि यह मदद करता है ....

+4

ध्यान दें कि UIWindow की 'firstResponder' विधि एक निजी एपीआई है, इसलिए इसका उपयोग करके ऐप्पल को ऐप को अस्वीकार करने के लिए उत्तरदायी है यदि आप इसे ऐप स्टोर में सबमिट करते हैं और आईओएस अगर भविष्य के संस्करणों में बिना किसी सूचना के काम करना बंद कर देते हैं। – Anomie

2

आप शायद जो भी दृश्य पहले प्रत्युत्तर रही है और उस पर resignFirstResponder बुला (जब तक आप iPad और MFMailComposeViewController पर हैं UIModalPresentationFormSheet उपयोग करता है) द्वारा यह कर सकता है, ऐप्पल इसके लिए आपके ऐप को अस्वीकार कर सकता है। Quoth the documentation:

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

यह आसानी से कीबोर्ड के व्यवहार को शामिल करने के लिए समझा जा सकता है।

3

मुझे एक ही समस्या का सामना करना पड़ा: किसी कारण से आईओएस पृष्ठभूमि में प्रवेश करते समय एमएफमेल कॉमपॉइस व्यू कंट्रोलर के कीबोर्ड को खारिज नहीं करता है (जब एप्लिकेशन फिर से सक्रिय हो जाता है तो खारिज होता है)। हालांकि आईओएस कुंजीपटल को खारिज कर देता है अगर पहला उत्तरदाता एक साधारण तत्व है (उदा। टेक्स्टव्यू)। इस्तीफा दे रहा है फर्स्ट रेस्पॉन्डर इस विशेष मामले में मेरे लिए काम नहीं करता था। क्योंकि मैं एप्लिकेशन पर विंडोज़ स्विच करता हूं वर्कएक्टिव (एक लॉगिन स्क्रीन दिखाने के लिए) मैं एक-दूसरे के ऊपर एकाधिक कीबोर्ड (शीर्ष पर काम करने वाले) पर समाप्त हुआ। मैं एक MFMailComposeViewController के कीबोर्ड ख़ारिज करने के लिए जब आवेदन सक्रिय इस्तीफा एक सरल समाधान का पाया:

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    // Workaround: MFMailComposeViewController does not dismiss keyboard when application enters background 
    UITextView *dummyTextView = [[UITextView alloc] init]; 
    [self.window.rootViewController.presentedViewController.view addSubview:dummyTextView]; 
    [dummyTextView becomeFirstResponder]; 
    [dummyTextView resignFirstResponder]; 
    [dummyTextView removeFromSuperview]; 
    // End of workaround 
} 

यह परोक्ष पहले प्रत्युत्तर इस्तीफा दे दूंगा अगर हम है कि वर्तमान में beeing प्रस्तुत किसी भी ViewController है।

+0

Thx! ऐसा लगता है कि आईओएस> = 6 (_UIRemoteView) –

+0

में रिमोट व्यूज़ के परिचय के कारण एमएफमेल कॉमपॉइस व्यू कंट्रोलर (या SLComposeViewController) के लिए कीबोर्ड को खारिज करने का यह एकमात्र वैध तरीका है। आप बिल्कुल सही हैं - इसे इंगित करने के लिए धन्यवाद। इसे स्पष्ट करने के लिए: मेरी धारणा यह है कि रिमोट व्यू एक अलग प्रक्रिया में चलते हैं, इसलिए आप उन्हें कीबोर्ड नहीं ले सकते हैं, हालांकि ऐप-नियंत्रित दृश्य के लिए पहले उत्तरदाता से अनुरोध करते हुए आप निस्संदेह कीबोर्ड पर नियंत्रण लेते हैं। –

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