2014-05-01 9 views
9

presentViewController का उपयोग कर "दाईं ओर" कुलपति फलक से एक मॉडल दृश्य प्रदर्शित करता है कि एक विरासत UISplitViewController iPad ऐप्लिकेशन है। मोडल व्यू के वीसी के viewDidAppear में, हम UITextField पर फर्स्ट रेस्पॉन्डर बन जाते हैं। आईओएस 6 में, इसके परिणामस्वरूप नीचे से स्लाइडिंग एक केंद्रित मोडल व्यू होता है जो तब केबी पर केंद्रित होता है। हालांकि, आईओएस 7 के बाद से, दृश्य के नीचे से ऊपर की ओर स्लाइड करने के बाद क्या होता है, यह 200 अंक के बारे में अनुमान लगाता है। अजीब चीज यह है कि, यदि आप कीबोर्ड को खारिज करते हैं, जैसे ही आप करते हैं, तो दृश्य आईओएस 6 पर इसकी केंद्रित स्थिति पर वापस स्लाइड करता है। तब से, जबकि मोडल व्यू ऊपर है, केबी फोकस इसे केंद्रित रहने का कारण बनता है और केवल थोड़ी सी स्लाइड करता है, जो गैर पूर्ण स्क्रीन मोडल दृश्यों के लिए सामान्य आईओएस व्यवहार है। यह एक बार जब आप केबी को खारिज कर देते हैं तो यह तब से "ठीक हो जाता है"। मैं प्रयोग किया और पाया है कि:iOS7 FormSheet मोडल दृश्य बदलाव जब एनिमेटेड

  1. आप animated सेट करते हैं presentViewController कॉल यह iOS6 तरह काम करता है के लिए कोई है।
  2. यदि आप becomeFirstResponder पर कॉल नहीं करते हैं, तो यह आईओएस 6 की तरह काम करता है।
  3. यदि आप पर becomeFirstResponder को becomeFirstResponder पर कॉल करने के बजाय चयनकर्ता के रूप में पास करते हैं, तो यह आईओएस 6 की तरह काम करता है।

ऊपर से विकल्प 3 वर्तमान में मेरा आगे कामकाज है, लेकिन मेरा सवाल यह है: क्या यह एक आईओएस 7 बग है, या क्या हम गलत चीज कर रहे हैं जो 6 में स्पष्ट रूप से ठीक है लेकिन आईओएस 7 में नहीं?

केवल आईओएस 7 के बाद होता है। केवल सिम्युलेटर पर एक बार फिर से बनाया गया, लेकिन टेस्ट डिवाइस (आईपैड मिनी) पर 100% समय। खोजों से मैंने अपना वर्तमान सबसे अच्छा अनुमान लगाया है (मान लीजिए कि हमारा कोड पोस्ट-आईओएस 7 को दोष नहीं देना है) क्या कीबोर्ड की एनिमेशन के बीच रेस हालत प्रकार बग है और आईओएस यूआई परत में नीचे से स्लाइड देखने वाला दृश्य है जो दृश्य को इसके बजाए दाएं स्थानांतरित करने का कारण बनता है, जैसे सामान्य रूप से ऐसा होता है जब एक गैर पूर्ण स्क्रीन दृश्य को सामान्य रूप से प्रस्तुत किया जाता है और केबी पॉप हो जाता है। this similar SO question पढ़ने के बाद मुझे वह सिद्धांत मिला।

+0

एचए! बस एक घंटे पहले इस आइटम में भाग गया। यह देखने में खुशी हुई कि मैंने कोड में कुछ नहीं किया है। :) इसे हल करने के सुझावों के लिए धन्यवाद। अपना प्रश्न +1 करें। पुष्टि के लिए –

उत्तर

14

इस समस्या को था। यह निश्चित रूप से iOS7.X में एक बग है। (आपको ऐप्पल के साथ एक बग रिपोर्ट खोलनी चाहिए!)। क्या होता है ऐप्पल की लेआउट गणना में बग है और सामान्य रूप से प्रस्तुत दृश्य को बदल देता है।

हम

dispatch_async(dispatch_get_main_queue(), ^{ [view becomeFirstResponder]; }); 

इस्तेमाल किया मुद्दा है, जो आपके # 3 के समान है पर काबू पाने के। इस मुद्दे पर काबू पाने, दृश्य के लेआउट के बाद तक यह कुंजीपटल उपस्थिति में देरी करता है।

+0

Thx! Grr, इन आईओएस टाइमिंग हैक से नफरत है हमें काम करना है ... – stonedauwg

+0

@Leo मैंने जोड़ा कि दृश्य दृश्य नियंत्रक के लिएDidLoad और viewDidAppear देखें। काम नहीं किया। आपने इसे कहाँ जोड़ा? – GoodSp33d

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