2012-07-07 8 views
7

मेरे पास एक टेक्स्टफ़िल्ल्ड है जो तालिका को बदलने के लिए सेट है, डेटा के प्रत्येक स्रोत के साथ स्रोत स्रोत (और reloadData कॉल करें)।UITableView reloadData UITextField को इस्तीफा देने का कारण बनता है FirstResponder

लेकिन किसी कारण से, हर बार एक पत्र दर्ज किया जाता है, कीबोर्ड को खारिज कर दिया जाता है।

कोई भी जानता है क्यों?

+1

अपने टेक्स्ट फ़ील्ड और किसी भी अन्य प्रासंगिक तरीकों के संपादन शुरू करने के लिए विधियों के कुछ कोड पोस्ट करें, अगर हम नहीं देख पा रहे हैं कि समस्या क्या है तो हम आपकी मदद नहीं कर सकते हैं। – 8vius

+1

संभावित डुप्लिकेट [UITableView reloadData पहले प्रतिसादकर्ता से इस्तीफा दे देता है] (http://stackoverflow.com/questions/6409370/uitableview-reloaddata-resigns- फर्स्ट-रिपोर्टर) – CodaFi

+0

@ कोडाफ़ी आपने इसे खींचा। टेक्स्टफिल्ड तालिका के शीर्ष पर एक कस्टम सेल में था, इसलिए जब मैं पुनः लोड करता हूं तो यह उस सेल को फिर से लोड करता है जिससे इसके अंदर कुछ भी इस्तीफा दे दिया जाता है। धन्यवाद!!! –

उत्तर

10

आपका टेक्स्ट फ़ील्ड इस्तीफा दे रहा है क्योंकि रीलोडेड सेल को -resignFirstResponder संदेश भेजा गया है क्योंकि इस तथ्य के कारण कि उनके अस्तित्व को पुनः लोड करने के बाद गारंटी नहीं है। अधिक के लिए यह related प्रश्न देखें।

+0

एक अच्छा वर्कअराउंड दृश्य में एक छुपा टेक्स्टफील्ड जोड़ रहा है, और तालिका को फिर से लोड करते समय उस टेक्स्टफील्ड पर फ़ोकस कर रहा है। तालिका को पुनः लोड करने के बाद, आप उस कीबोर्ड को खोलने के लिए फ़ोकस को अपने मूल टेक्स्टफील्ड पर वापस स्विच कर सकते हैं। [self.fakeTextField बन गया फर्स्ट रेस्पॉन्डर]; [self.tableView reloadData]; [self.textField प्रदर्शन चयनकर्ता: @ चयनकर्ता (बनें फर्स्ट रेस्पॉन्डर) ऑब्जेक्ट: शून्य बाद के बाद: .01]; – hobosf

-3

इस विधि का उपयोग करें textFieldShouldReturn: और 0Clअपनी क्लास.h फ़ाइल में प्रतिनिधि जोड़ें। अपने टेक्स्टक्फील्ड में प्रतिनिधि सेट करें और viewDidLoad विधि में निम्न कोड लिखें।

yourTextfield.delegate = self;

और के रूप में के रूप में

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

     [theTextField resignFirstResponder]; 

    return YES; 
} 

निम्नलिखित भी textFieldShouldReturn: लागू मुझे लगता है कि यह आपके लिए उपयोगी साबित होगा।

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