मेरे पास UIViewController (रूट व्यू कंट्रोलर) सेट हैUIWindow के रूट व्यू कंट्रोलर के रूप में। किसी भी व्यू / व्यू कंट्रोलर को इस रूटव्यू कंट्रोलर सबव्यू में जोड़ा गया है जिसमें यूआईएनएविगेशन कंट्रोलर भी शामिल है।
मैंने पाया कि UINavigationController के लिए आईओएस 7 में एक नया व्यवहार है कि आप पिछले दृश्य नियंत्रक पर वापस स्वाइप कर सकते हैं। लेकिन यह मेरे मामले के लिए काम नहीं करता है।
अगर मैं UIWindow के रूट व्यू कंट्रोलर के रूप में UINavigationController सेट करता हूं। यह काम करता हैं।
तो मेरे प्रश्न यह है कि अगर यह UIViewController में जोड़ा जाता है तो इसे वापस स्वाइप क्यों नहीं कर सकता ??
अपडेट किया गया:
यह पता चला है कि अगर नेविगेशन बार छुपा हुआ है, तो स्वाइप फ़ंक्शन अक्षम कर दिया जाएगा ....
उत्तर:
उत्तर № 1 के लिए 1दृश्य नियंत्रक की रोकथाम को व्यवस्थित करने के साथ शायद यह कुछ करने के लिए है। मै शर्त लगाता हु -viewDidLoad
जब आप नेविगेशन नियंत्रक के दृश्य को उप-दृश्य के रूप में जोड़ते हैं तो आपके नेविगेशन नियंत्रक के दृश्य नियंत्रकों पर नहीं कहा जा रहा है UIWindow
"रों rootViewController
। कस्टम व्यू कंट्रोलर कंटेंटेशन को सही ढंग से सेट अप करने के तरीके पर साहित्य का एक अच्छा सा हिस्सा है जैसे कि आपके व्यू कंट्रोलर पर सही तरीके से आग लगती है:
इसके अलावा, अगर ऐप्पल ने इसके लिए संक्रमण API का उपयोग किया थाबातचीत से यह संभव है कि नेविगेशन कंट्रोलर के प्रतिनिधि को सही तरीके से झुकाया नहीं जा रहा है (जैसा कि नेविगेशन नियंत्रकों को रूट व्यू कंट्रोलर के रूप में सेट किया जाएगा), या माता-पिता दृश्य नियंत्रक इशारा चोरी / छुपाएं । मैं पहले नेविगेशन नियंत्रक के पॉप इशारा प्रतिनिधि को देखता हूं और देखता हूं कि यह नहीं है nil
:
NSLog(@"%@", self.navigationController.interactivePopGestureRecognizer.delegate);
अगर यह नहीं है nil
तो मैं जांचता हूं कि नेविगेशन नियंत्रक पर एक इशारा पहचानकर्ता सामान्य रूप से आग लग सकता है:
// In the navigation controller"s root view controller, try this:
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move)];
[panRecognizer setMaximumNumberOfTouches:1];
[self.view addGestureRecognizer:panRecognizer];
// Then test to see if its working:
- (void)move {
NSLog(@"Hello world.");
}