2013-08-07 2 views
7

तो मेरे पास तालिका दृश्य के साथ UITableViewController का मानक उप-वर्ग है। अब मैं मैं भी मानक तरीके से UIRefreshControl उपयोग कर रहा हूँUIRefreshControl का उपयोग करते समय तालिका दृश्य सामग्री नीचे कूदना और सामग्री सेट करना

self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0); 

करने के लिए सामग्री इनसेट निर्धारित किया है।

self.refreshControl = [[CTRefreshControl alloc] init]; 
[self.refreshControl addTarget:self action:@selector(loadData:) forControlEvents:UIControlEventValueChanged]; 

सभी ठीक काम करता है और तालिका दृश्य के लिए पर्याप्त डेटा है कि यह स्क्रॉल (ताकि सामग्री आकार ऊंचाई तालिका दृश्य की ऊंचाई की तुलना में अधिक है) शामिल हैं सुचारू रूप से अगर। जब टेबल में पर्याप्त डेटा नहीं होता है (उदा। केवल 2 पंक्तियां) तो जब मैं नीचे खींचना शुरू करता हूं तो यह आसानी से चला जाता है और फिर अचानक यह लगभग 20 अंक नीचे चला जाता है। जब मैं दूसरी दिशा स्क्रॉल करता हूं तो वही बात होती है। ऐसा तब नहीं होता जब कोई रीफ्रेश नियंत्रण न हो या जब मैं ContentInset नहीं बदलता। कोई विचार? सभी आईओएस 6

+0

सामग्री के परिवर्तन को एक एनीमेशन ब्लॉक में 0.2 सेकंड की अवधि के साथ रखें। – Fogmeister

+0

आप तालिका दृश्य की सामग्री इन्सेट क्यों बदल रहे हैं? सामग्री इन्सेट को बदले बिना ऐसा करने का एक बेहतर तरीका हो सकता है। – Fogmeister

+4

हां, मुझे भी वही समस्या है। यह आईओएस में स्पष्ट रूप से एक बग है। मैंने इसे ऐप्पल को सबमिट कर दिया है और उन्होंने इसे स्वीकार कर लिया है। – Accatyyc

उत्तर

1

पर आप इस तरह एक एनीमेशन ब्लॉक में contentInset के परिवर्तन लगाने की जरूरत है ...

[UIView animateWithDuration:0.2 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 
        self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0); 
       } 
       completion:nil]; 

(स्मृति से लिखे गए हैं ताकि आप कोड पूरा होने की जांच करने के लिए हो सकता है)।

यह आपकी समस्या को ठीक करना चाहिए।

+0

मैं सामग्री सेट कर रहा हूं दृश्य में जांच करेंडलोड को सामग्री के रूप में हमेशा 40 पिप्स कम रहना चाहिए (जब तक आप स्क्रॉल नहीं करते) तो इसका कोई प्रभाव नहीं पड़ता है। – Michal

+0

दृश्य के बजाय इंटरफ़ेस बिल्डर में सामग्री इन्सेट सेट करनाडिडलोड को सामग्री इन्सेट लागू किया जाना चाहिए और ऑफसेट में UITableViewController को शामिल करना चाहिए। –

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