2012-09-21 10 views
8

आईओएस 6 बीटा 4 और आईओएस 5.1.1 में काम करना बंद कर देता है। मैंने यूआईवी व्यू कंट्रोलर में होस्ट किए गए विभिन्न QLPreviewControllers के बीच उपयोगकर्ताओं को स्वाइप करने की अनुमति देने के लिए बाएं/दाएं स्वाइप किए हैं।आईओएस 6 यूआईजीस्टर्स (स्वाइप) QLPreviewController

आईओएस 6 के जारी संस्करण में स्वाइप अब पूरी तरह से अनदेखा कर रहे हैं।

पूर्वावलोकन नियंत्रक को निगलने का मौका देने से पहले स्वाइप को अवरुद्ध करने के लिए पूर्वावलोकन नियंत्रक को होस्ट करने के दृश्य में पूर्वावलोकन नियंत्रक के एक दृश्य के रूप में UIView को देखने का प्रयास किया गया है, लेकिन इन्हें कभी भी ट्रिगर नहीं किया जाता है।

किसी ने इसे देखा या आसपास के काम के बारे में पता है।

धन्यवाद,

+4

मुझे एक परियोजना के साथ एक समान समस्या है जिसमें मैं शामिल हूं। –

उत्तर

2

मुझे एक ही समस्या थी, लेकिन UITapGestureRecognizer QLPreviewController पर काम नहीं कर रहा था। आईओएस 6 में यह बात UIGestureRecognizer ऑब्जेक्ट्स के लिए ब्लैक होल की तरह है ... कुछ भी इसे बाहर नहीं बनाता है!

हालांकि मुझे एक कामकाज मिला। मैं QLPreviewController उपवर्गीकरण कर रहा हूँ, तो मेरे उपवर्ग में मैं (अपेक्षाकृत) नई viewWillLayoutSubviews विधि के साथ दुर्व्यवहार किया और निम्नलिखित स्निपेट कहा:

UIView *overlay = [[UIView alloc] initWithFrame:self.view.frame]; 
overlay.backgroundColor = [UIColor whiteColor]; 
overlay.alpha = .002f; 
for (UIView *v in self.view.subviews) 
{ 
    [v addSubview:overlay]; 
} 
[overlay release]; 

यह overkill हो सकता है लेकिन मैं मूल रूप से शीघ्रता से अवलोकन subviews के सभी में चला गया और कहा कि उन लोगों के लिए एक दृश्य जो इशारा स्वीकार करेंगे। मैं .002 अल्फा के साथ गया क्योंकि इसे कम करने से संकेतों को फिर से अनदेखा कर दिया जाएगा।

+0

शानदार, इसके लिए धन्यवाद। हालांकि यह काम करता है, मैं ध्यान दूंगा कि आप सभी मानक QLPreviewController व्यवहार, ज़ूम, स्क्रॉल इत्यादि को हटा दें –

+0

क्या यह खतरनाक नहीं है? एक ही UIView इंस्टेंस को एकाधिक दृश्यों के सबव्यूव के रूप में जोड़ना? दृश्य का एक उदाहरण दृश्य पदानुक्रम में केवल एक बार दिखाई दे सकता है। – Echelon

+0

यह शुरू करने के लिए एक हैक था। बेन की तरह, यह QLPreviewController संकेतों में निर्मित ब्लॉक को ब्लॉक करता है। मैं वास्तव में अंत में छोड़ दिया और UIDocumentInteractionController के साथ चला गया। उस पर कस्टम इशारा नहीं लगा सकते हैं, लेकिन यह मेरी टीम की तलाश के लिए एक बेहतर मैच था। अभी भी खुश नहीं है, लेकिन मुझे आगे बढ़ना पड़ा। = -/आपके प्रश्न के लिए, मुझे दृश्य का पुन: उपयोग करने में कोई समस्या नहीं थी।लेकिन आप आसानी से लूप को प्रत्येक ओवरले के लिए एक नया दृश्य बना सकते हैं। – ghostatron

1

आपका प्रयास किया समाधान करीब था, लेकिन शायद पीछे की ओर है कि तुम क्या करना चाहिए था से। पूर्वावलोकन नियंत्रक के सबव्यूव के रूप में एक और दृश्य जोड़ने के बजाय, पूर्वावलोकन नियंत्रक को UIView के उप-दृश्य के रूप में जोड़ें।

मानक UIView के अंदर पूर्वावलोकन नियंत्रक को सबव्यूव करें। फिर, UIView के इशारे रिकॉग्नाइज़र संग्रह में अपने इशारे को पुन: असाइन करें, उन्हें QLPreviewController संग्रह से हटा दें।

यह सुनिश्चित नहीं है कि यह क्यों बदला गया, लेकिन मेरे ऐप के साथ मुझे एक ही समस्या थी, मेरे अलावा यह UITableView था जो अब स्क्रॉल नहीं कर रहा था।

+1

हाय डेविड, सुझाव के लिए धन्यवाद, मैंने दृष्टिकोण की कोशिश की और यह आईओएस 5 में काम करता है, लेकिन आईओएस 6 में QLPreviewController दस्तावेज़ लोड होने के बाद भी सभी संकेतों को अवरुद्ध करता है। –

2

मुझे यह भी पता चला है कि एक ही कोड का उपयोग करके, UIGestureRecognizers ने आईओएस 6 के तहत काम करना बंद कर दिया है। लेकिन यह पूरी तरह टूटा नहीं है। ऐप्पल डेवलपमेंट नमूना प्रोजेक्ट "SimpleGestureRecognizers" अभी भी कार्य करता है। कोड की तुलना करने के बाद, मैंने पाया कि स्पष्ट रूप से "addGestureRecognizer" ने समस्या का समाधान किया (अन्य सभी चरणों के अलावा जो आप आईबी के तहत करते थे)। अपने आईबीओटलेट्स नामों में से एक को छोड़कर बाएं स्विस रिच्ननाइज़र, आप कर सकते हैं:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    .... 
    // swipe recognizer 
    [self.view addGestureRecognizer:self.leftSwiftRecognizer]; 

} 

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

  • कोई संबंधित समस्या नहीं^_^