2013-04-05 10 views
7

में स्क्रॉल मैं एक viewController जहाँ से UIPageViewController (@interface PageScrollViewController : UIPageViewController) विरासत में अब मैं सोच रहा हूँ मैं कैसे सक्षम और अक्षम कर सकते हैं UIPageViewController से स्क्रॉल मिल गया? UIScrollView का उपयोग करते समय आप setScrollEnabled:NO और self.view.userInteractionEnabled = NO; करेंगे, यह विकल्प नहीं है क्योंकि यह केवल स्क्रॉलिंग के बजाय पूरे UIView को अवरुद्ध करता है।अक्षम/सक्षम UIPageViewController

संपादित यह PageScrollViewController : UIPageViewController कक्षा में है:

if ([[notification name] isEqualToString:@"NotificationDisable"]){ 
    NSLog (@"Successfully received the disable notification!"); 
    for (UIGestureRecognizer *recognizer in self.gestureRecognizers) { 
     recognizer.enabled = NO; 
    } 
} 

उत्तर

9

UIPageViewController और अक्षम की gestureRecognizers के माध्यम से पाशन प्रयास करें/उन्हें सक्षम:

for (UIGestureRecognizer *recognizer in pageViewController.gestureRecognizers) {   
     recognizer.enabled = NO; 
} 

नोट: के रूप में this SO post में पाया, यह विधि केवल UIPageViewControllerTransitionStylePageCurl के लिए काम करेगी। आप this solution (हालांकि यह थोड़ा हैकी लगता है) का प्रयास करना चाह सकता है।

+0

मैंने यह कोशिश की है, फॉर-लूप कभी निष्पादित नहीं होता – Shinonuma

+1

आप इस लूप को कहां निष्पादित करते हैं? कुछ कोड देखने में मददगार होगा। – tilo

+0

मैंने अपना प्रश्न – Shinonuma

6

मैंने निम्नलिखित बात की है (मेरे पास एक नियंत्रक है जो UIPageViewController रखता है)।

self.pageController.view.userInteractionEnabled = NO; 

और जब आप स्वाइप या स्क्रॉल सक्षम करना चाहते हैं, तो बस उपयोगकर्ता इंटरैक्शन सक्षम करें।

+2

दुर्भाग्यवश यह आपके पास वीसी में मौजूद किसी भी नियंत्रण को अक्षम करता है। – Fook

+1

जैसा कि @ शिनोनुमा ने कहा: "self.view.userInteractionEnabled = नहीं; यह विकल्प नहीं है क्योंकि यह केवल स्क्रॉलिंग के बजाय पूरे UIView को अवरुद्ध करता है।" –

+0

@ मैरियो करवाल्लो हां, यह किसी भी इशारा को अक्षम करता है, जो इस समाधान की खामियां है। :(मैंने इसे पोस्ट किया है, क्योंकि यह किसी के लिए मदद कर सकता है और इसके समाधान की खोज करते समय पर्याप्त (मेरे लिए) हो सकता है। – Nemanja

8

या फिर आप अपने PagingVC में डाली पेजिंग अक्षम करने के लिए कर सकते हैं:

self.delegate = nil; 
self.dataSource = nil; 

और के लिए फिर से सक्षम: nil को UIPageViewController dataSource गुण को सेट स्क्रॉल रोकता

self.delegate = self; 
self.dataSource = self; 
0

, क्योंकि पृष्ठ दृश्य नियंत्रक संक्रमण के लिए "अगला" दृश्य नियंत्रक निर्धारित करने का कोई तरीका नहीं है।

self.dataSource = nil // scrolling disabled 

self.dataSource = self // scrolling enabled 
संबंधित मुद्दे