तो मेरे पास आईओएस 7 ऐप के लिए मेरे निर्मित में नेविगेशन नियंत्रक है। शीर्षक दृश्य दृश्यमान है, साथ ही साथ बैक बटन और नेविगेशन बार स्वयं भी है। किसी कारण से, इंटरैक्टिव पॉप इशारा (बाएं किनारे से स्वाइप) काम नहीं कर रहा है। कुछ नहीं हुआ। जब मैं इशारा लॉग करता हूं, तो यह शून्य नहीं होता है। क्या इस कार्यक्षमता को सक्षम करने के लिए मुझे कुछ खास करना है? क्या काम नहीं कर सकता है?UINavigationController इंटरएक्टिव पॉप इशारा काम नहीं कर रहा है?
उत्तर
एह, लगता है कि मैं सिर्फ इशारा प्रतिनिधि की स्थापना की और निम्नलिखित को लागू करने के लिए किया था:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
आप viewDidLoad विधि में इस लाइन डाल सकते हैं।
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
मेरे लिए काम किया .. धन्यवाद – Simmy
इस response और टिप्पणियों को देखें। आपको बस इतना करना है nil
करने के लिए अपने नेविगेशन नियंत्रक के इंटरैक्टिव पॉप इशारा पहचानकर्ता के प्रतिनिधि सेट है:
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
id<UIGestureRecognizerDelegate>
करने के लिए एक casted आत्म करने के लिए यह निर्धारित करना भी काम करता है क्योंकि प्रोटोकॉल में सभी तरीकों वैकल्पिक हैं, लेकिन मैं प्रतिनिधि स्थापित करने लगता है इस मामले में nil
अधिक उपयुक्त है।
अधिक बाहर काम किया जवाब दोनों हारून और lojals
पहले अनुकूलित नेविगेशन नियंत्रक था और फिर वर्ग
viewDidLoad में इस कोड डाल इस लाइन डाल:
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
और में कक्षा इस समारोह को लिखें
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES;}
मुझे वें मिला है कस्टम बैक बटन का उपयोग करते समय, इंटरैक्टिव पॉप इशारा काम करना बंद कर देता है (मेरा लेना यह है कि ऐप्पल यह नहीं देख सकता कि आपका कस्टम बैक बटन कैसा व्यवहार करेगा, इसलिए वे इशारा को अक्षम करते हैं)।
इसे ठीक करने के लिए, जैसा कि पहले उल्लेख किया गया है, आप interactivePopGestureRecognizer.delegate
संपत्ति nil
पर सेट कर सकते हैं।
स्विफ्ट में, यह आसानी से इस तरह UINavigationController
के लिए एक एक्सटेंशन जोड़कर अपने पूरे आवेदन भर में किया जा सकता है:
extension UINavigationController {
override public func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = nil
}
}
अपडेट किया गया जवाब
nil
कारणों के लिए प्रतिनिधि की स्थापना की तरह लगता है कुछ परिदृश्यों में फ्रीज करने के लिए ऐप यूआई (उदाहरण के लिए जब उपयोगकर्ता नेविगेशन स्टैक के शीर्ष दृश्य नियंत्रक पर बाएं या दाएं स्वाइप करता है)।
क्योंकि gestureRecognizerShouldBegin
प्रतिनिधि विधि एक विस्तार में संभाला नहीं जा सकता, उपवर्गीकरण UINavigationController
सबसे अच्छा समाधान की तरह लगता है:,
class NavigationController: UINavigationController, UIGestureRecognizerDelegate {
/// Custom back buttons disable the interactive pop animation
/// To enable it back we set the recognizer to `self`
override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
यह काम करता है, लेकिन यह पता चला है कि कुछ परिस्थितियों में यह ऐप को जमा करता है। मुझे लगता है कि यह तब होता है जब इंटरैक्टिव पॉप इशारा ट्रिगर होता है जबकि दृश्य नियंत्रक को धक्का दिया जा रहा है। 'UINavigationController' subclass करने के लिए एक सुरक्षित तरीका होगा। उपclass में 'interactivePopGestureRecognizer.delegate' को स्वयं पर सेट करें और इंटरैक्टिव पॉप इशारा को पहचानने से रोकने के लिए एक नया व्यू कंट्रोलर धक्का दिया जाता है। – joern
दरअसल, मुझे यह समस्या भी मिली है, नेविगेशन नियंत्रक स्टैक के केवल शीर्ष दृश्य नियंत्रक को प्रभावित करता है। मैंने उप-वर्गीकरण में आधारित एक अलग समाधान के साथ अपना जवाब अपडेट किया है। –
@Eneko Alonso सही! जैसा कि आपने कहा था, अगर उपयोगकर्ता बाएं या दाएं स्वाइप करता है और फिर बटन को टैप करता है - पुश व्यू कंट्रोलर ग्लिच किया जाता है। Subclassing समस्या को हल करता है 100% – Alex
- 1. UINavigationController - पॉप एनीमेशन बग
- 2. self.navigationItem.hidesBackButton क्यों काम नहीं कर रहा है?
- 3. स्वाइप वापस - interactivePopGestureRecognizer काम नहीं कर रहा
- 4. scrollsToTop काम नहीं कर रहा
- 5. smsManager.sendTextMessage काम नहीं कर रहा है
- 6. Meteor.loginWithFacebook काम नहीं कर रहा है?
- 7. UINavigationController: विपरीत दिशा में पॉप व्यू कंट्रोलर
- 8. jquery AJAXStart काम नहीं कर रहा है
- 9. बूटस्ट्रैप डेटपिकर काम नहीं कर रहा है।
- 10. काम नहीं कर रहा
- 11. काम नहीं कर रहा
- 12. काम नहीं कर रहा
- 13. काम नहीं कर रहा
- 14. काम नहीं कर रहा
- 15. काम नहीं कर रहा
- 16. क्या UINavigationController को दो बार पॉप करना संभव है?
- 17. कैसे UINavigationController और UIViewController काम करता है?
- 18. यह सरल पर्ल पुश/पॉप प्रोग्राम क्यों काम नहीं कर रहा है?
- 19. कैसंद्रा (सीक्यूएल) 'कहां' काम नहीं कर रहा है '0' काम नहीं कर रहा है
- 20. सी # में काम नहीं करना काम नहीं कर रहा है?
- 21. WinForms AcceptButton काम नहीं कर रहा है?
- 22. आईई e.target.id काम नहीं कर रहा है
- 23. बूटस्ट्रैप स्क्रोलस्पी काम नहीं कर रहा है
- 24. GridView.setOnItemClickListener काम नहीं कर रहा है
- 25. सूची। एक्सेप्ट काम नहीं कर रहा है
- 26. एक्शनबार शेरलॉक काम नहीं कर रहा है
- 27. FB.getLoginStatus() काम नहीं कर रहा है
- 28. जावास्क्रिप्ट getElementByID() काम नहीं कर रहा है
- 29. @ फ़ॉन्ट-फेस काम नहीं कर रहा है
- 30. आईएडी बैनर काम नहीं कर रहा है
Ive इस जाँच की लेकिन बहुत डरावने समस्या जब मैं इस तय कर दी है तो उपयोगकर्ता आधे रास्ते स्लाइड अगर और फिर वापस आओ मैं अगले नियंत्रक को पिछले दृश्य नियंत्रक पर ओवरलैप देखता हूं। मैं पिछला दृश्य नियंत्रक देखता हूं और अगला ओवरलैप पारदर्शी ग्लास की तरह पारदर्शी है।तो उपयोगकर्ता इस राज्य को बंद कर दिया जाता है। कोई उपाय। यह कुछ ऐसा दिखाई देता है जो प्रकट होता है/समस्या को संभालने में दिखाई देगा। –