2014-09-15 8 views
7

के साथ सब कुछ काम करता है मैं पीडीएफ फाइलों को देखने के लिए क्विकलुक के साथ काम कर रहा हूं।क्विकुक्यू/क्यूएलप्रूव कंट्रोलर, आईओएस 8 के साथ कुछ समस्याएं लेकिन आईओएस 7.1

यह आईओएस 7.1 में ठीक से काम कर रहा है लेकिन आईओएस 8 जीएम के साथ कुछ समस्याएं होती हैं।

चित्र शब्दों से बेहतर कर रहे हैं, मैं चाहता हूँ कि आप समस्याओं को दिखाने:

आईओएस 7.1 Xcode 6 (काम करता है ठीक) quicklook साथ

संक्रमण (कोई विफल)

Transition QuickLook iOS 7.1

पृष्ठ स्क्रॉल, नेविगेशनबार अच्छी तरह से छुपाता है

Page scroll QuickLook iOS 7.1

---------------------------------------- ----------------------------------

और अब, एक्सकोड 6 के साथ आईओएस 8 जीएम quicklook साथ

संक्रमण ...

Transition QuickLook iOS 8 GM

पृष्ठ स्क्रॉल, navigationBar छिपा नहीं है, तो पृष्ठ सूचक NavigationBar

Page scroll QuickLook iOS 8 GM

iPhone सिम्युलेटर, आईपैड सिम्युलेटर, iPhone उपकरण और iPad डिवाइस के साथ एक ही समस्या के पीछे छुपाता है।

आप यहाँ मेरी स्रोत कोड देख सकते हैं:

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)previewController 
{ 
    NSInteger numToPreview = 0; 
    if (currentSection == CVSectionConvocations) 
     numToPreview = self.convocation.convocations.count; 
    else if (currentSection == CVSectionAttachments) 
     numToPreview = self.convocation.attachements.count; 
    return numToPreview; 
} 

- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx 
{ 
    PDF *pdf; 
    if (currentSection == CVSectionConvocations) 
     pdf = self.convocation.convocations[idx]; 
    else if (currentSection == CVSectionAttachments) 
     pdf = self.convocation.attachements[idx]; 
    return [pdf path]; 
} 



- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
    // determine section 
    currentSection = (indexPath.section == 0 ? CVSectionConvocations : CVSectionAttachments); 

    PDF *pdf; 
    if (currentSection == CVSectionConvocations) 
     pdf = self.convocation.convocations[indexPath.row]; 
    else if (currentSection == CVSectionAttachments) 
     pdf = self.convocation.attachements[indexPath.row]; 

    if ([pdf isStored]) { 
     QLPreviewController *previewController = [[QLPreviewController alloc] init]; 
     previewController.dataSource = self; 
     previewController.delegate = self; 

     previewController.currentPreviewItemIndex = indexPath.row; 
     [[self navigationController] pushViewController:previewController animated:YES]; 
    } else { 
     [self displayMessage:@"Document not found" title:@"Oups !"]; 
    } 
} 

आपकी मदद के लिए धन्यवाद;)

+0

कृपया http://bugreport.apple.com पर एक बग दर्ज करें। उन क्षेत्रों में जिन्हें आईओएस रिलीज नोट्स में बदल दिया गया है, इस तरह बाइनरी संगतता मुद्दे बग हैं ... –

+0

क्या आपको अभी तक इन समस्याओं के लिए कोई फिक्स मिला है? –

+0

कोई फिक्स नहीं, ऐप्पल से कोई प्रतिक्रिया नहीं .. – thedjnivek

उत्तर

1

मैं हाल ही में पृष्ठभूमि मुद्दा बग को ठीक कर लिया है (एनीमेशन अभी भी अस्थिर होती है)।

'ब्लैक बैकग्राउंड' समस्या को ठीक करने के लिए मैंने पुश पर नेविगेशन नियंत्रक के दृश्य का कस्टम पृष्ठभूमि रंग सेट किया है। मेरे दृश्य नियंत्रक पर वापस लौटने पर मैं मूल पृष्ठभूमि रंग को शून्य में पुनर्स्थापित करना सुनिश्चित करता हूं।

- (void)viewWillApear:(BOOL)animated { 
    [super viewWillApear:animated]; 
    self.navigationController.view.backgroundColor = nil; 

    // Optional - In order to ease the animation bug 
    self.view.alpha = 1.0; 
} 


- (void)viewWillDissapear:(BOOL)animated { 
    [super viewWillDissapear:animated]; 
    self.navigationController.view.backgroundColor = [UIColor whiteColor]; 

    // Optional - In order to ease the animation bug 
    [UIView animateWithDuration:0.35 animations:^{ 
     self.view.alpha = 0.0; 
    }]; 
} 

यह कोड आपके व्यू कंट्रोलर पर जाना चाहिए जिससे आप QLPreviewController को दबा रहे हैं।

यह समाधान निश्चित रूप से एक हैक है, लेकिन उम्मीद है कि यह मदद करता है!

2

मुझे संक्रमण के साथ एक ही समस्या मिली। मेरा समाधान एक प्रॉपर्टी में पूर्वावलोकन नियंत्रक को स्टोर करना था और इसे मेरे प्रस्तुत करने वाले व्यू कंट्रोलर में डीडलोड को देखने में एक बार शुरू करना था।

मुझे जब भी मैं पूर्वावलोकन नियंत्रक को दबाता हूं, तो मुझे भी वर्तमान PreviewItemIndex 0 को बराबर सेट करना पड़ता था, हालांकि मैं उस समय केवल एक फ़ाइल दिखा रहा हूं।यदि मैं मान ज़िप फ़ाइलों को सेट नहीं कर रहा हूं तो डिफ़ॉल्ट रूप से खोला नहीं जाता है और पूर्वावलोकन नियंत्रक एक 'सामग्री दिखाएं' बटन दिखाता है जो एक ही संक्रमण समस्या को पीड़ित एक नया पूर्वावलोकन नियंत्रक खोल देगा।

मैं अभी भी नेविगेशन बार मुद्दे को छिपाने के लिए ठीक करने की कोशिश कर रहा हूं। apple sample project में सब कुछ ठीक काम करता है। ऐसा लगता है कि नेविगेशन नियंत्रक को सामान्य रूप से पेश करने से मेरी परियोजना में समस्या आती है।

संपादित करें:

यह निश्चित रूप से मेरे लिए एक बग हो रहा है। नेविगेशन बार के साथ समस्या केवल तब दिखाई देती है जब नेविगेशन नियंत्रक को मोडल प्रस्तुत किया जाता है। ऐसा लगता है कि पूर्वावलोकन नियंत्रक एक नया नेविगेशन नियंत्रक बनाता है और एक नई नेविगेशन बार भी बनाता है। यह होस्टिंग नेविगेशन नियंत्रक के नेविगेशन बार के नीचे छिपा हुआ है। यह स्क्रीनशॉट समस्या को अच्छी तरह से दिखाता है: enter image description here

नीली हाइलाइट बार स्वयं self.navigationBar है और नीला फ़्रेम वाला पूर्वावलोकन नियंत्रक से संबंधित है। फिर यह तब होता है जब नेविगेशन नियंत्रक को मोडल प्रस्तुत किया जाता है।

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

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.previewController = [[QLPreviewController alloc] init]; 
    self.previewController.delegate = self; 
    self.previewController.dataSource = self; 

    self.navigationController.delegate = self; 
} 

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    // Workaround: 
    // If the previewController is pushed to a navigation controller which is presented modal, it appears that the preview controller adds a second navigation bar (and navigation controller). 
    // This results in a UI glitch that one nav bar is always visible. To prevent this we hide our navigation bar so that only the one owned by the preview controller is visible. 
    // Note that this only happends if the navigation controller is presented modal, thus it seems to be an iOS bug. 
    if (viewController == self.previewController) { 
     [self.navigationController setNavigationBarHidden:YES animated:YES]; 
    }  
}