2012-10-04 9 views
6

मैं कुछ आसान हासिल करने की कोशिश करने में निराशा के लिए प्रेरित हूं।UITableView उपभोग करने वाली स्पर्श घटनाओं को रोकें ताकि पैरेंट व्यू में स्लाइडिंग मेनू क्षैतिज स्वाइप का पता लगा सके

मेरे पास एक मेनू के साथ एक दृश्य है कि, क्षैतिज स्वाइप के साथ ऐसा करने के लिए स्पर्श किए जाने पर touchEvents बाईं ओर स्लाइड करता है। मैं इशारा पहचानकर्ताओं का उपयोग नहीं करता, मैं बस स्पर्शों का उपयोग करता हूं, स्पर्श करता हूं, स्पर्श करता हूं, आदि .. और प्रारंभिक स्पर्श स्थिति, बीच के बीच और परिष्कृत स्पर्श स्थिति के बीच एक्स समन्वय अंतर को ट्रैक करता हूं। यह बहुत अच्छा काम करता है।

लेकिन, जब मेरे शरीर में एक UITableView है, तो टच इवेंट अब मेनू के प्रबंधन के दृश्य में पदानुक्रम को अपना रास्ता नहीं ढूंढते हैं। मैंने पर्यवेक्षण/अगली रेस्पॉन्डर पर छूने से गुजरने की कोशिश की, किस प्रकार के काम, लेकिन मुझे एक स्पर्श दिखाई देता है और 2 स्पर्शों से पहले कॉल किया जाता है इससे पहले पदानुक्रम को आगे संसाधित करने से रोक दिया जाता है।

विशेष रूप से, मेरे पास एक स्लाइडमेनू व्यू है, जिसमें मेनू दृश्य और बॉडी व्यू है। शरीर के दृश्य के अंदर, मेरे पास UITableView पर कुछ बिंदु है। मैं देखता हूं (एनएसएलओजी के माध्यम से) कि स्पर्श * विधियों को शुरू से ही ठीक से खत्म करने के लिए कहा जाता है। मैं उन्हें अगली रेस्पॉन्डर पर भेजता हूं और उन्हें SlideMenuView में भी देखना शुरू करता हूं - लेकिन स्पर्श करने के लिए 2 कॉल के बाद, वे स्लाइडमेनू व्यू में रुकते हैं लेकिन मेरे UITableView में जारी रहते हैं।

मैं ऐसा करने के लिए UITableView को ओवरराइड कर रहा हूं, लेकिन मैंने इसके अंदर और कुछ नहीं बदला है।

मुझे पता है कि यह संभव होना चाहिए, क्योंकि यह फेसबुक ऐप में है। आप शरीर में कहीं भी स्वाइप कर सकते हैं, जो क्षैतिज रूप से स्क्रॉल करने योग्य है और मेनू को प्रकट करता है। मैं वही चीज़ स्वाभाविक रूप से यहां लेना चाहता हूं, लेकिन ऐसा लगता है कि कुछ अजीब हो रहा है, और UITableView घटनाओं का उपभोग या नष्ट कर रहा है।

क्या कोई इस से मेरी सहायता कर सकता है? किसी ने इसे एक साफ तरीके से हासिल किया होगा।

+0

क्या कोई कारण है कि आप इशारा पहचानकर्ताओं का उपयोग नहीं कर सकते हैं? मुझे लगता है कि अगर आप ऐसा कर सकते हैं तो इसे पूरा करना आसान होगा। – rdelmar

उत्तर

9

ठीक है, किसी के लिए दिलचस्पी है - मुझे एक साफ समाधान मिला।

ऐप्पल जानता है कि वे क्या कर रहे हैं। उस दिन वापस हम touchesBegan ओवरराइड करते थे, लेकिन फिर उन्होंने GestureRecognizers पेश किया। कुछ नियंत्रणों के लिए, जैसे कि UIScrollView (और UITableView जैसे किसी उप-वर्ग), वे अपने ईवेंट उत्तरदाता प्रणाली को कुचलने लगते हैं। मुझे यह मानने में गलती थी कि Gesture Recognizers कुछ खास नहीं करते हैं, और इन touchesBegan पर बस हुक करें ... तरीकों - यह सही नहीं है।

सबसे सुरक्षित तरीका Gesture Recognizers का उपयोग करना है। विशेष रूप से, उन पर कुछ विकल्प हैं जो सभी अंतर कर सकते हैं। मेरे मामले में .cancelsTouchesInView = YES जैसे।

तो मैंने जो किया, मेनू दृश्य पर PanGestureRecognizer का उपयोग करें, .cancelsTouchesInViewYES पर सेट करें, और यह काम करता है। मैं touchesBegan से बचने जा रहा हूं, ... प्लेग की तरह, और किसी भी जटिल के लिए कस्टम इशारा पहचानकर्ता लिखना।

मुझे आशा है कि इससे किसी को अपने बालों को खींचने में मदद मिलेगी जैसे मैं था!

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