2010-04-16 9 views
15

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

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 

    if (theTextField == email) { 
     [password becomeFirstResponder]; 
     return NO; 
    } 

    [theTextField resignFirstResponder]; 
    return NO; 
} 
+3

एक बग की तरह लगता है। मैं bugreport.apple.com पर एक रिपोर्ट दर्ज करने का सुझाव देना चाहता हूं। –

+2

वही समस्या होने पर टेक्स्टफिल्ड्स मोडल प्रस्तुति के साथ एक मोडल व्यू में हैं = UIModalPresentationFormSheet –

+0

मुझे यह बग भी अनुभव हो रहा है। –

उत्तर

1

मैं इस बारे में भी यकीन नहीं है, लेकिन, जैसा कि मैंने प्रत्युत्तर पदानुक्रम को समझने, इस्तीफा देने के लिए काम करेंगे केवल यदि आप जवाब देने के लिए कुछ अन्य प्रत्युत्तर की है।

नियमित दृश्य में, दृश्य स्वयं तैयार है। एक पॉपअप में, शायद आपको काम करने के लिए अपने पॉपअप क्लास (जैसे कुछ प्रतिक्रिया विधियों को पुन: कार्यान्वित करना) में कुछ करने की आवश्यकता है।

1

मुझे यह समस्या भी थी। लेकिन मैंने इसे एक और नियंत्रण बनाकर हल किया, जो पॉपओवर में firstResponder के रूप में नहीं है और बाद में इसे वहां से इस्तीफा दे दिया। लेकिन मुझे पॉपओवर के साथ समस्या नहीं है।

2

जैसा कि this answer में वर्णित है, दृश्य कभी-कभी स्क्रीन पर रहता है जब दृश्य UIModalPresentationFormSheet शैली के साथ प्रस्तुत किया जाता है।

17

चेक this प्रश्न:

disablesAutomaticKeyboardDismissal ओवरराइड NO नीचे के रूप में वापस जाने के लिए मेरा एक ही समस्या तय की। आप अपने दृश्य नियंत्रक के लिए इस कोड रखना चाहिए, जिसमें से आप कुंजीपटल आरंभ:

- (BOOL)disablesAutomaticKeyboardDismissal { 
    return NO; 
} 
+1

का संदर्भ लें एक विशेष मामला है। यदि आपका व्यू कंट्रोलर UINavigaitonController के अंदर है, तो आपको UINavigationController को उपclass करने और वहां विधि को ओवरराइड करने की आवश्यकता है। अधिक जानकारी के लिए http://stackoverflow.com/questions/3316700/dismiss-keyboard-on-ipad/14879832#14879832 देखें। – Quentamia

0

जवाब एक समान समस्या के साथ दूसरों के लिए एक संभव समाधान के रूप में प्रदान की जाती है, लेकिन जहां पारंपरिक उपचार काम नहीं करते।

सारांश में -

मैं (एक निश्चित शर्त तहत ) एक ऐसी ही समस्या थी और सब कुछ करने की कोशिश की - कोई लाभ नहीं हुआ - संभव समाधान की अपनी सूची में शामिल [obj के resignFirstResponder] था, 'disablesAutomaticKeyboardDismissal का अधिभावी 'मेरे दृश्य नियंत्रक के लिए, [self.view endEditing: हाँ]; और अन्य चीजों का एक गुच्छा।

वर्तमान पहले उत्तरदाता के [आईडी] को निर्धारित करने के बारे में सोचने के लिए, केवल यह पता लगाने के लिए कि यह शून्य था। कीबोर्ड पर 'संपन्न' टैप करना या ऊपर दिए गए किसी भी तरीके का उपयोग करने से कुछ भी नहीं हुआ - कुंजीपटल बनी रही - एक और इनपुट फ़ील्ड पर टैप करने के बाद भी।

स्क्रीन अनिवार्य रूप से एक दृश्य नियंत्रक के साथ एक दृश्य नियंत्रक था जिसमें प्रत्येक सेल में एक पाठ इनपुट फ़ील्ड - 7 या 8 कुल मिलाकर था। किसी भी सेल पर टैप करने से अपेक्षित के रूप में कीबोर्ड को लाया जाएगा और एक अलग 'अगला' बटन टैप करने के लिए (कीबोर्ड और अन्य प्रोसेसिंग को छिपाने के लिए) अपेक्षित काम करेगा। हालांकि, लैंडस्केप मोड में, अंतिम फ़ील्ड कुंजीपटल द्वारा कवर किया गया था ताकि टेबल को इस तरह प्रकट करने के लिए स्क्रॉल किया जा सके।

उस अंतिम इनपुट फ़ील्ड को स्क्रॉल करने और टैप करने के बाद, कीबोर्ड को बर्खास्त नहीं किया जा सका - इससे कोई फर्क नहीं पड़ता। कीबोर्ड के नीचे टेबल को स्क्रॉल करना था, फिर 'केवल' बटन टैप करें। यह समझ में नहीं आता है।

लगभग छोड़ने (और कामकाज को कार्यान्वित करने) के बिंदु पर, समाधान जो काम करता था वह अंतिम इनपुट क्षेत्र को पहला रेस्पॉन्डर (भले ही इसमें पहले से ही एक चमकदार कर्सर था) और उसके बाद इस्तीफा देने के लिए फर्स्ट रेस्पॉन्डर।

तो; नहीं था:

`- जबकि [#any अन्य सूचकांक # m_arrInputFields objectAtIndex] - (शून्य) actionNext {

[[m_arrInputFields objectAtIndex:7] becomeFirstResponder]; 
[[m_arrInputFields objectAtIndex:7] resignFirstResponder]; 

}`

समस्या तय!

कोई अच्छा होगा अगर कोई इस के लिए स्पष्टता या स्पष्टीकरण प्रदान कर सके - अन्यथा - मुझे उम्मीद है कि यह किसी और काम के कुछ घंटे बचाएगा!

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

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