2009-01-22 7 views
6

मैं कुछ ऐसा करने की कोशिश कर रहा हूं जिसे मैंने सोचा था।आईफोन पर फोकस के साथ यूआईसींट्रोल कैसे बदलते हैं?

मेरे पास दो UITextFields के साथ एक फॉर्म है। मैं पहले UIReturnKeyNext शैली का उपयोग कर रहा हूँ। विचार यह है कि जब उपयोगकर्ता पहले फ़ील्ड में भर जाता है, तो वे अगला क्लिक करते हैं और मैं उन्हें अगले UITextField में स्थानांतरित करता हूं। मैंने अन्य ऐप्स देखे हैं जो ऐसा करते हैं और यह वास्तव में अच्छी तरह से काम करता है। लेकिन मैं यह नहीं समझ सकता कि फोकस को अगले क्षेत्र में कैसे सेट करें।

उत्तर

9

सरल। अपने अन्य टेक्स्टफील्ड में फर्स्ट रेस्पॉन्डर संदेश बनें। जब अन्य टेक्स्टफील्ड पहली प्रतिक्रियाकर्ता स्थिति स्वीकार करता है, तो उसे कीबोर्ड से जानकारी प्राप्त होगी।

उदाहरण के लिए:

//called when the next button is pressed 
//Assume textField1, 2, and 3 are instances of UITextField 
-(IBAction) nextPressed: (id) sender { 
     if ([textField1 isFirstResponder]) { 
     [textField2 becomeFirstResponder]; 
     } 
     if ([textField2 isFirstResponder]) { 
     [textField3 becomeFirstResponder]; 
     } 

} 
+0

यह मेरा पहला विचार के रूप में अच्छी तरह से था, लेकिन मैं डॉक्स, जो स्पष्ट रूप से becomeFirstResponder राज्य एक UIResponder सूचित करने के लिए जब वे के बारे में बनने वाले हैं प्रयोग किया जाता है से उलझन में था पहला प्रतिसादकर्ता। मैक ओएसएक्स पर, एनएसआरस्पॉन्डर सीधे फर्स्ट रेस्पॉन्डर बनने से मना कर देता है। लेकिन, यह पता चला है कि आप सही हैं। – Andy

+0

क्या आप प्रत्येक टेक्स्ट फ़ील्ड पर अगली दबाए गए लिंक (ऊपर दिए गए उदाहरण में इसे टेक्स्टफ़िल्ल्ड 1, 2, 3 से लिंक कर रहे हैं) ??? – HollerTrain

+0

हां, यदि आप इंटरफ़ेस बिल्डर का उपयोग कर रहे हैं तो आप सभी टेक्स्टफील्डों के 'टच अप इनसाइड' एक्शन को उसी अगली दबाए गए विधि से जोड़ सकते हैं, जबकि उनमें से प्रत्येक को अपने आईबीओटलेट (टेक्स्टफिल्ड 1, टेक्स्टफिल्ल्ड 2, आदि) से कनेक्ट करते समय –

0

उत्तर ऊपर अपवाद है कि आप मूल पाठ क्षेत्र से resignFirstResponder चाहेगा के साथ महान काम करता है।

यदि आप पहले उत्तरदाता से इस्तीफा नहीं देते हैं, तो आईओएस स्वचालित स्क्रॉल समायोजन तब काम नहीं करेगा जब अगला फ़ील्ड पहला उत्तरदाता बन जाएगा। (कुंजीपटल अगले पाठ क्षेत्र को कवर हो सकता है।)

-(IBAction) nextPressed: (id) sender { 

    //Resign first so that when the next field becomes firstResponder 
    //the text field will scroll into place if covered by the keyboard 
    [sender resignFirstResponder];  

    if ([textField1 isFirstResponder]) { 
     [textField2 becomeFirstResponder]; 
    } 
    if ([textField2 isFirstResponder]) { 
     [textField3 becomeFirstResponder]; 
    } 
} 
+0

एक मिनट रुको ... आईओएस स्वचालित स्क्रॉल समायोजन क्या है?! मैंने हमेशा देखा है कि आपको इस तरह के स्क्रॉलिंग को संभालना होगा। मुझे यहां एक साधारण ऐप मिला है इस पर कई UITextFields, और जब वे कीबोर्ड को कवर करते हैं तो वे निश्चित रूप से दृश्य में नहीं स्क्रॉल करते हैं। मुझे क्या याद आ रही है? –

+0

यह आईओएस में बनाया गया है। बहुत यकीन है कि आपके टेक्स्ट फ़ील्ड को उस दृश्य के अंदर होना चाहिए जो अंदर है UIScrollView। – zachzurn

+0

आह, ठीक है, शायद यह UIScrollView का व्यवहार है ... इससे कुछ समझ आएगी। हालांकि, अन्य मामलों में विशेष रूप से सहायक नहीं है। –

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