11

में UITapGestureRecognizers का उपयोग करने वाले मुद्दे मैं UITapGestureRecognizer ऑब्जेक्ट का उपयोग करने का प्रयास कर रहा हूं जो इंटरफ़ेस बिल्डर में पाया जा सकता है। मैंने ऑब्जेक्ट लाइब्रेरी से एक एकल दृश्य Uib पर एक "UITapGestureRecognizer" खींचा है। मैं फिर इस टैप जेस्चर से एक आईबीएक्शन विधि बनाता हूं, एक साधारण परीक्षण के लिए, मैं दृश्य पर एक टैप होने के बाद कंसोल को "NSLog" संदेश प्रिंट कर रहा हूं। मैंने इसे चलाया है, और टैप विधि नहीं कहा जा रहा है। मैं आईबी में दृश्य पर राइट क्लिक करता हूं और मैंने देखा कि एक चेतावनी है "!" दृश्य के "आउटलुक संग्रह" पर मैं देख रहा हूँ:इंटरफ़ेस बिल्डर

Outlook Collections 
gestureRecognizers - Tap Gesture Recognizer (!) 

चेतावनी राज्यों: UIView does not have an outlet collection named gestureRecognizers.

क्या मैं इसे ठीक करने की आवश्यकता है?

+0

मैं एक ही अभ्यास के माध्यम से चला गया और यह मेरे लिए काम करता है। मैं आईओएस एसडीके 5 के साथ एक्सकोड 4.2 का उपयोग कर रहा हूं। चेतावनी संदेश वहां है लेकिन यह अभी भी एनएसएलओजी संदेश प्रिंट करता है। –

+0

क्या कोई विचार है कि चेतावनी क्या है या इसका उपचार कैसे किया जा सकता है? – 5StringRyan

+1

मुझे संदेह है कि इशारा करने वालों को आईबीओलेट के रूप में परिभाषित नहीं किया गया है, लेकिन कुछ कैसे हम आईबी में इशारा रिकॉर्डर नियंत्रण को छोड़ते हैं और यह जानता है कि इसे हमारे लिए कैसे तारित किया जाए। –

उत्तर

0

this पर एक नज़र डालें।

विशेष रूप से आउटलेट सेटअप का स्क्रीन शॉट। उम्मीद है कि मदद मिलेगी।

1

दो चीजों को जांचने के लिए: क्या आपका व्यू कंट्रोलर (UIView वाला एक व्यक्ति) UIGestureRecognizerDelegate प्रोटोकॉल को लागू करता है?

एक बार यह UIGestureRecognizerDelegate लागू करता है, तो सुनिश्चित करें कि आपने इशारा पहचानकर्ता की प्रतिनिधि संपत्ति को व्यू कंट्रोलर पर सेट कर दिया है। मैंने कनेक्शन बनाने के लिए एक स्टोरीबोर्ड का इस्तेमाल किया।

मैं ऐसा करता हूं और मुझे कोई त्रुटि नहीं मिलती है (आईओएस 5.1, xCode 4.3)।

1

मैं इस किया था मेरी नेविगेशन बार करने के लिए एक डबल जेस्चर टैप जोड़ने के लिए, पूरी तरह से कोड में और यह बहुत उपयोग करना आसान पाया ....

ध्यान में रखते हुए किया भार ...

//Add double tap gesture to Navbar 
UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc] 
            initWithTarget:self action:@selector(navigationBarDoubleTap:)]; 
tapRecon.numberOfTapsRequired = 2; 
[self.navigationController.navigationBar addGestureRecognizer:tapRecon]; 

मेरे पास एक विधि है ...

#pragma mark - Auto Refresh Method 
- (void)navigationBarDoubleTap:(UIGestureRecognizer*)recognizer { 
     //Do Stuff Here 
} 

शायद आप इसे अनुकूलित कर सकते हैं।

प्लाज्मा

0

चेतावनी एक मुद्दा नहीं होना चाहिए। यह केवल इसलिए है क्योंकि आप कई इशारा पहचानकर्ताओं को आईबीओलेट संग्रह के रूप में जोड़ सकते हैं लेकिन इसकी आवश्यकता नहीं है।

डीबगिंग के दौरान बेहतर त्रुटि संदेशों को प्राप्त करने के लिए अपनी योजना में लाश चालू करें। मेरे मामले में व्यू कंट्रोलर मैं अपने इशारे हैंडलर के साथ संदेश भेजने की कोशिश कर रहा था इंटरफ़ेस बिल्डर में तत्काल नहीं किया जा रहा था।

इसके अलावा, प्रतिनिधि प्रोटोकॉल को लागू करना आवश्यक नहीं है और यह किसी भी UIView पर काम करेगा।

4

मुझे लगता है कि आपने UITapGestureRecognizer को अपने कोड में ठीक से तार नहीं दिया है।

जब आप अपने xib Xcode पर UITapGestureRecognizer ड्रॉप करते हैं तो स्वचालित रूप से आवश्यक संदर्भ आउटलेट कनेक्शन बनाता है।

आपको केवल अपने कोड में IBAction विधि बनाने की आवश्यकता है और फिर xib में स्थित U ITapGestureRecognizer के चयनकर्ता को इसे तार करें।

मैंने आपके संदर्भ के लिए स्क्रीनशॉट संलग्न किए हैं।

enter image description here

enter image description here

आशा इस मदद करता है !!

4

श्री अज्ञात समाधान सही है। दृश्य नियंत्रक में प्रतिनिधि को लागू करने या इसे सेट करने की आवश्यकता नहीं है। हालांकि, आपको यह जांचना चाहिए कि उपयोगकर्ता इंटरैक्शन सक्षम की गई है (दाईं तरफ गुण विंडो में), खासकर यदि आप किसी लेबल को पहचानकर्ता को जोड़ रहे हैं।

2

मैं यह जांचना भूल गया था कि उपयोगकर्ता इंटरैक्शन सक्षम को इशारा पहचानकर्ता के विचारों के लिए जांचना होगा।

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