मैं एक सप्ताह से अधिक समय तक इस समस्या का हल ढूंढ रहा हूं। मैं आपका जवाब दे रहा हूं भले ही आप एक साल से अधिक प्रश्न पूछ रहे हों, इससे उम्मीद है कि इससे दूसरों की मदद मिलती है।
क्षमा करें अगर मेरी भाषा बहुत तकनीकी नहीं है, लेकिन मैं उद्देश्य-सी और आईफोन विकास के लिए काफी नया हूं।
सबक्लासिंग UIpickerView इसे करने का सही तरीका है। लेकिन आपको - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
विधि को ओवरराइड करना होगा। जब भी आप स्क्रीन को स्पर्श करते हैं तो यह विधि कहा जाता है और यह उस दृश्य को वापस करता है जो स्पर्श पर प्रतिक्रिया करेगा। दूसरे शब्दों में देखें जिसका touchesBegan:withEvent:
विधि कहा जाएगा।
UIPickerView में 9 सबव्यूज़ हैं! UIPickerView क्लास कार्यान्वयन में - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
self
वापस नहीं लौटाएगा (इसका मतलब है कि touchesBegan:withEvent:
जो आप सबक्लास में लिखते हैं उसे नहीं कहा जाएगा) लेकिन एक सबव्यूव वापस कर देगा, वास्तव में इंडेक्स 4 (यूआईपीकरटेबल नामक एक अनियंत्रित उपclass) पर दृश्य।
चाल - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
विधि self
ताकि आप touchesBegan:withEvent:
, touchesMoved:withEvent:
और touchesEnded:withEvent:
तरीकों पर नियंत्रण है वापस जाने के लिए बनाने के लिए है।
इन तरीकों में, UIPickerView की मानक कार्यक्षमताओं को रखने के लिए, आपको उन्हें फिर से कॉल करना याद रखना चाहिए, लेकिन UIPickerTable सबव्यू पर।
मुझे उम्मीद है कि यह समझ में आता है। मैं कोड लिख नहीं सकता, जैसे ही मैं घर पर हूं, मैं इस जवाब को संपादित करूँगा और कुछ कोड जोड़ूंगा।
धन्यवाद यह :) – ArunGJ
काम किया इस कोड को काम करने के लिए, को छोड़कर एक स्पर्श फ्रेम कि तुरंत पिकर पहिया चारों ओर से घेरे पर होती है, तो लगता है। ऐसा करने से getNextResponderView को कॉल के अनंत लूप का कारण बनता है: withEvent: method। – pistachionut
या मैंने getNextResponderView से hitTestView की बजाय शून्य को वापस करके इसे रोक दिया: साथ: अगर मैंने आसपास के पहिये को छुआ। – ArunGJ