2010-04-21 23 views
7

पर UITextField को स्पर्श नहीं कर सकता मुझे पता है कि इस बारे में बहुत कुछ बात की गई है। मुझे लगता है कि मैं इस साइट पर हर सवाल के माध्यम से चला गया है, और अभी भी यह काम करने में सक्षम नहीं है।UIScrollView

मैं विकास के लिए नया हूं लेकिन मुझे अपने सभी कोड के साथ क्या चल रहा है, इसकी अच्छी समझ है। मुझे निश्चित रूप से बहुत अनुभव नहीं है, यह मेरा पहला आईफोन ऐप है।

मैं डेटा प्रविष्टि फ़ील्ड बना रहा हूं जिसमें UIScrollView के भीतर एकाधिक UITextFields शामिल हैं। मैं अब के लिए अन्य विवरण समझाऊंगा, क्योंकि ऐसा लगता है कि यह एक बहुत ही बुनियादी समस्या है। स्क्रॉलव्यू के बिना, टेक्स्टफील्ड पूरी तरह से काम करते हैं। मैं टेक्स्टफील्ड को स्पर्श कर सकता हूं और कीबोर्ड या पिकर व्यू उचित रूप से दिखा सकता हूं। जब मैं स्क्रॉलव्यू में टेक्स्टफील्ड जोड़ता हूं, तो स्क्रॉलव्यू काम करता है, लेकिन फिर टेक्स्ट फ़ील्ड को मेरे स्पर्श नहीं मिलते हैं।
यहां कुंजी है: जब 'उपयोगकर्ता इंटरैक्शन' सक्षम होता है, तो स्क्रॉलव्यू काम करता है लेकिन टेक्स्टफील्ड स्पर्श पंजीकृत नहीं होते हैं। जब 'उपयोगकर्ता इंटरैक्शन' अक्षम किया जाता है, तो स्क्रॉलव्यू काम नहीं करता है, लेकिन टेक्स्टफील्ड को पंजीकृत किया जाता है और कीबोर्ड/पिकर पॉप अप होता है।

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

मैं अब के लिए अपना कोड छोड़ दूंगा, क्योंकि शायद कोई समाधान है कि किसी को मेरे कोड की आवश्यकता के बिना है। अगर किसी को मेरा कोड देखने की ज़रूरत है, तो मैं इसे रखूंगा। मेरा ऐप 3.1.3 एसडीके में लिखा जा रहा है।

यदि किसी के पास कोई भी जानकारी है जो मदद कर सकती है, तो इसकी बहुत सराहना की जाएगी।

उत्तर

0

ऐसा लगता है कि आप अपने यूआई लेआउट को करने के लिए आईबी का उपयोग कर रहे हैं। यदि आप प्रोग्रामेटिक दृष्टिकोण लेते हैं तो आप निम्नलिखित दृश्य पदानुक्रम को सेट अप कर सकते हैं जो काम करना चाहिए।

आपका दृश्य नियंत्रक वस्तु अपने पुस्तक को देखने और अपने पाठ क्षेत्रों के प्रबंधन के एक UIScrollView वस्तु और एक UIView वस्तु (किसी भी UITextField वस्तुओं आप की जरूरत के अलावा) होना चाहिए। व्यू कंट्रोलर क्लास के लोड व्यू विधि में, UIView ऑब्जेक्ट आवंटित और इनटाइलाइज करें और उप-दृश्यों के रूप में अपने टेक्स्ट फ़ील्ड्स को इसमें जोड़ें। विधि के अंत में, UIScrollView ऑब्जेक्ट आवंटित और इनटाइलाइज करें, फिर UIView को UIScrollView पर एक सबव्यूव के रूप में जोड़ें।

उदाहरण के लिए, यदि आपके UIScrollView वस्तु scrollview और अपने UIView वस्तु mainView कहा जाता है कहा जाता था दृश्य नियंत्रक के loadView विधि के अंत में निम्नलिखित लाइनों को ठीक से स्क्रॉल दृश्य उस पर पाठ क्षेत्रों के साथ मुख्य दृश्य के साथ स्थापित करेगा :

scrollView = [[UIScrollView alloc] initWithFrame: [[UIScreen mainScreen] bounds] ]; 
scrollView.backgroundColor = [UIColor whiteColor]; 
scrollView.contentSize = mainView.frame.size; 
[scrollView addSubview: mainView]; 
self.view = scrollView; 
0

आपको आवश्यकतानुसार स्क्रॉल व्यू और टेक्स्ट फ़ील्ड दोनों के लिए उपयोगकर्ता इंटरैक्शन को सक्षम/अक्षम करने की आवश्यकता हो सकती है।

यदि संभव हो तो आप प्रत्येक प्रक्रिया (स्क्रॉलिंग और टेक्स्टफील्ड इनपुट) के लिए अलग-अलग स्पर्श तंत्र का उपयोग कर सकते हैं।

शायद आप टच स्टार्ट और एंड के बीच समय अंतर को देख सकते हैं जैसे कि आप ड्रैग (स्क्रॉल) और टैप (टेक्स्ट इनपुट) के बीच अंतर का पता लगा सकते हैं।

यह कहकर कि यदि आप टेक्स्टफील्ड से स्क्रॉलव्यू तक छूने का प्रचार करते हैं तो आपको ठीक होना चाहिए।एक बात मैं उपयोग करता हूं:

[myObject addTarget:self action:@selector(itemTouchedUpInside:) forControlEvents:UIControlEventTouchUpInside]; 

जो ऑब्जेक्ट को स्पर्श करता है ताकि आप इसकी पहचान कर सकें और तदनुसार कार्य कर सकें।

3

यहां मेरे लिए Xcode 4.3.3 में काम किया गया है।

स्टोरीबोर्ड में, अपना scrollview चुनें। दाईं तरफ Attribute Inspector का चयन करें। Delays Content Touches अनचेक करें।