मेरे पास एक सेल के साथ UITableView है जो इसके अंदर एक UITextView फिट करने के लिए गतिशील रूप से आकार दिया गया है। जब भी कोई कुंजी टाइप की जाती है, तो सेल यह देखने के लिए जांच करता है कि गणना की गई ऊंचाई बढ़ी है, जैसा कि एक नई लाइन के साथ है, इसलिए यह तालिका को बता सकता है कि सेल की ऊंचाई को फिर से गणना करने की आवश्यकता है। मैं यह कोड के साथ करता हूँ।सेल रीफ्रेश पर शीर्ष पर UITableView स्क्रॉल
- (void) createNoteCellViewDidUpdate: (CreateNoteCell*) cell {
CGFloat newHeight = [self tableView:self.tableView heightForRowAtIndexPath:CreateNoteCellIndexPath];
if (newHeight != CGRectGetHeight(cell.contentView.frame)) {
[self.tableView beginUpdates];
[self.tableView endUpdates]; // <- HERE IS WHERE THE CONTENT OFFSET CHANGES
}
}
आकार और तालिका सीमाएं अपेक्षित हैं। लेकिन ऊंचाई में परिवर्तन को एनिमेट करने की बजाए, यह शीर्ष पर भी स्क्रॉल करता है। रिटर्न कुंजी दबाते समय इसे यहां देखा जा सकता है।
कुंजी मान को देख कर, मुझे पता चला है कि पुस्तक को देखने contentOffset स्थापित किया जा रहा है, जब स्क्रॉल दृश्य की contentSize बदल जाता है। और जब एंडअपडेट्स विधि कहा जाता है तो सामग्री आकार कई बार बदल जाता है। जब यह बदलता है तो यह सामान्य ऊंचाई से, बल्कि बड़ी ऊंचाई तक जाता है, फिर सामान्य ऊंचाई पर वापस जाता है। मुझे आश्चर्य है कि इसके कारण यह शीर्ष पर जा रहा है। मुझे नहीं पता कि यहां से कहाँ जाना है।
प्रश्न - आप सेल का आकार बदलने के बजाय अपने टेबलव्यू का आकार बदलने का प्रयास क्यों कर रहे हैं? आम तौर पर एक टेबलव्यू का फ्रेम निरंतर रहता है और इसकी सामग्री में परिवर्तन होता है। – Frankie
नहीं, मैं टेबल व्यू फ्रेम या सीमाओं को छू नहीं रहा हूं।मैं कोशिकाओं के सभी ऊंचाइयों को फिर से समझने के लिए तालिका दृश्य को बताकर सेल का आकार बदल रहा हूं। – Jadar