8

मैं इस सवाल पूछने के लिए बर्दाश्त कर रहा हूँ पर modaly प्रस्तुत क्योंकि बड़े शोध लगभग Googling, ढेर बह निकला, आदि के 2days के बाद ...iOS इन-कॉल स्थिति पट्टी अद्यतन ViewController स्क्रीन

मेरे मुद्दा यह है: मैं मीटर इस तरह अपने मुख्य ViewController से ViewController पेश:

UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:VController]; 
navigation.transitioningDelegate = self; 
navigation.modalPresentationStyle = UIModalPresentationCustom; 

[self presentViewController:navigation 
        animated:YES 
       completion:nil]; 

जब भी एक iPhone उपयोगकर्ता कॉल में शामिल है, या एक हॉटस्पॉट के रूप में अपने या अपने फोन का उपयोग कर रहा है, स्थिति पट्टी मेरी modaly धक्का बढ़े हुए है नीचे लेकिन करने के लिए कुलपति प्रस्तुत मूल (0; 0) पर सेट है समस्या तब होती है जब उपयोगकर्ता के दौरान कॉल समाप्त होता है, वह मेरे आवेदन स्थिति बार में सामान्य होता है आकार लेकिन मॉडल वीसी नहीं बढ़ गया।

enter image description here

मैं इस बारे में पता था, जब यह इस सूचना के कोड धन्यवाद में होती हैं:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statuBarChange:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil]; 

सबसे बुरी बात है फ्रेम corect कर रहे हैं और मूल अभी भी (0,0)

हैं कि

क्या मोडल प्रस्तुत वीसी को रीफ्रेश करने का कोई तरीका है? बाहर विघटित और फिर से प्रस्तुत करने के साथ?

+0

आप वोट क्यों देते हैं? मैंने यह प्रश्न ढूंढने और जवाब देने के लिए लिखा था। व्यवहार के बारे में कुछ भी नहीं है जो मोडल वीसी और इन स्टेट स्टेटस बार प्रस्तुत करता है। यदि आप वोट देते हैं तो कृपया बताएं क्यों, फिर मैं उससे संबंधित हो सकता हूं। – Shial

उत्तर

0

क्या आपको वास्तव में इस मॉडल के लिए एक कस्टम संक्रमण की आवश्यकता है? यदि नहीं, तो लाइन "नेविगेशन। ModalPresentationStyle = UIModalPresentationCustom" को हटा दें और आप जाने के लिए अच्छे हैं।

यदि आपको कस्टम शैली की आवश्यकता है, तो यह आईओएस 8+ और स्टेटस बार में UIModalPresentationCustom शैली के साथ एक ज्ञात बग है। AFAIK, आपको एनिमेट ट्रांजिशन के साथ इस चारों ओर हैक करना होगा और फ्रेम को उचित जगहों पर चारों ओर घुमा देना होगा।

नीचे ऐप प्रतिनिधि में willChangeStatusBarFrame का उपयोग करके इसके लिए एक भयानक हैक भी है। यदि आप वास्तव में एक मोडल अप करते हैं, और परिवर्तन को एनिमेट करते हैं तो आप इसका पता लगाने में सुधार कर सकते हैं।

- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame 
{ 
    if (newStatusBarFrame.size.height < 40) { 
     for (UIView *view in self.window.subviews) { 
      view.frame = self.window.bounds; 
     } 
    } 
} 

एक अन्य विकल्प मोडल कवर स्थिति पट्टी बनाने के लिए, और उस दृश्य नियंत्रक के लिए prefersStatusBarHidden ओवरराइड करने के लिए है।

मुझे इन सभी समाधानों से नफरत है, लेकिन यह आपको परियोजना के सेट अप के आधार पर कुछ व्यावहारिक प्रदान करना चाहिए, और यदि आप अस्थायी मोडल संवाद के लिए उस छोटी सी जगह को अनदेखा नहीं कर सकते हैं।

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