2011-12-08 12 views
5

मुझे लगता है कि UIKeyInput प्रोटोकॉल लागू करता है औरकस्टम UIView और becomeFirstResponder

- (BOOL) canBecomeFirstResponder{ 
    return YES; 
} 

उपवर्ग में परिभाषित किया गया है एक कस्टम UIView है। जब बुला:

[customView becomeFirstResponder]; 
NSLog(@"is first? %i",[customView isFirstResponder]); 

किसी बटन को क्लिक के दौरान, यह झूठी देता है, भी हालांकि canBecomeFirstResponder ठीक से सेट किया गया है और UIKeyInput प्रोटोकॉल संबंधी कार्यों के सभी लागू होते हैं। इस प्रतिक्रिया को पहले उत्तरदाता बनने से क्या अन्य चीजें अवरुद्ध हो सकती हैं? यह स्क्रॉल व्यू के अंदर रहता है और यदि कोई मदद करता है तो दूसरा कस्टम व्यू।

अद्यतन:

मैं देखना क्या वर्तमान प्रथम प्रत्युत्तर के साथ था जाँच:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

और आश्चर्यजनक रूप से firstRespondernil था। तो घटनाओं को छेड़छाड़ करने के लिए कुछ भी नहीं लगता है।

+0

क्या कुछ और अभी पहले उत्तरदाता को छोड़ने से इंकार कर रहा है? किसी टेक्स्ट फ़ील्ड या कस्टम प्रतिनिधि के साथ कुछ पसंद है? –

उत्तर

7

क्या आपने becomeFirstResponder ओवरराइड किया था?

उपवर्गों राज्य को अपडेट करने या इस तरह के चयन पर प्रकाश डाला के रूप में कुछ कार्रवाई करने के लिए इस विधि ओवरराइड कर सकते हैं।

फॉलोअप:

उपवर्गों राज्य अद्यतन करने के लिए या इस तरह के चयन पर प्रकाश डाला के रूप में कुछ कार्य इस विधि ओवरराइड कर सकते हैं।

एक प्रत्युत्तर वस्तु केवल पहले प्रत्युत्तर यदि वर्तमान प्रत्युत्तर प्रथम प्रत्युत्तर स्थिति (canResignFirstResponder) और नए प्रत्युत्तर पहले प्रत्युत्तर बन सकता है इस्तीफा देने के कर सकते हैं हो जाता है।

आप पहले उत्तरदाता को देखने के लिए इस विधि को उत्तरदाता ऑब्जेक्ट बनाने के लिए कह सकते हैं। हालांकि, आपको केवल उस दृश्य पर कॉल करना चाहिए यदि यह दृश्य पदानुक्रम का हिस्सा है। यदि दृश्य की विंडो प्रॉपर्टी में UIWindow ऑब्जेक्ट है, तो इसे दृश्य पदानुक्रम में स्थापित किया गया है; यदि यह शून्य देता है, तो दृश्य किसी भी पदानुक्रम से अलग होता है।

क्या आपने सत्यापित किया है कि आप उपरोक्त सभी शर्तों को पूरा करते हैं?

+0

नहीं, लेकिन यह अच्छा है कि आप कर सकते हैं। – Ralphleon

+0

मैंने इसे चारों ओर खेलने के लिए उप-वर्गीकृत किया है, और वास्तव में सुपर वापस लौट रहा है नहीं :( – Ralphleon

+0

शायद यह मामला था। – Steve