2014-05-20 8 views
9

जब मैं धीरे-धीरे रीफ्रेश करने के लिए नीचे खींचता हूं, तो मुझे लगता है कि रीफ्रेश शुरू होने से पहले UIActivityIndicator सर्कल धीरे-धीरे अधिक पूर्ण हो जाता है। सर्कल पूरा होने से ठीक पहले और रीफ्रेश वास्तव में ट्रिगर होता है, सामग्री नीचे कूद जाती है और फिर सर्कल कताई शुरू होती है। जब मैं धीरे-धीरे नीचे खींचता हूं तो मैं केवल यह ध्यान देता हूं।आईओएस में कूदने के लिए खींचें

मैं पुल का उपयोग कर रहा mainSV

self.refresh = [[UIRefreshControl alloc] init]; 
    [self.refresh addTarget:self action:@selector(handleRefresh) forControlEvents:UIControlEventValueChanged]; 
    [self.mainSV addSubview:self.refresh]; 

क्यों इस कूद/झटका होता है कहा जाता है एक स्क्रॉल दृश्य के अंदर ताज़ा करने के लिए?

+0

क्या आप स्टोरीबोर्ड का उपयोग कर रहे हैं? आपका लक्ष्य आईओएस क्या है? – andrewbuilder

+0

मेरे पास एक मुख्य कहानी बोर्ड है। स्क्रॉल दृश्य एक xib में है। मैंने अभी देखा है कि यह आईओएस 6 में कोई समस्या नहीं है, यह केवल आईओएस 7 में कूदता है। – tcox

+0

आईओएस 6 और 7 के बीच 'रीफ्रेश' बदल गया है। मैं एक उत्तर प्रदान करूंगा ... – andrewbuilder

उत्तर

8

यह शायद आईओएस में एक बग है। आपका सेटअप सही है, और मैं अपने ऐप में एक ही चीज़ देखता हूं।

5

मुझे संदेह है कि कूद/झटका एक "डबल" कार्रवाई के कारण है।

Xcode 5.

की रिहाई जैसे निम्नलिखित refresh कार्यान्वयन के लिए एक परिवर्तन नहीं था, में वर्णित के रूप लक्ष्य कार्रवाई निर्धारित करने की आवश्यकता नहीं रह गया है आवश्यक है।

जैसा कि आप स्टोरीबोर्ड का उपयोग कर रहे हैं, अपने इंटरफ़ेस बिल्डर/स्टोरीबोर्ड फ़ाइल में, अपने स्टोरीबोर्ड दृश्य (तालिका दृश्य नियंत्रक) का चयन करें।

गुणांक निरीक्षक में, उपशीर्षक तालिका दृश्य नियंत्रक के तहत, आइटम "रीफ्रेशिंग" का चयन करें और "अक्षम" से "सक्षम" सेटिंग को बदलें।

Attribute Inspector for Table View Controller

हटाएँ या कोड आप अपने प्रश्न में शामिल किया है की तीन लाइनों बाहर टिप्पणी। तो स्वचालित रूप से नहीं अपने कोड में डाल दिया (जब यह आवश्यक था, यानी पहले Xcode 5 के लिए, मैं इस कोड मेरे viewDidLoad टीवीसी जीवन चक्र विधि में रखा।)

, तो के रूप में या तो एक सार्वजनिक या निजी IBAction इस ऐड ...

- (IBAction)refresh:(UIRefreshControl *)sender; 
भेजा घटना "बदल दिया मूल्य" करने के लिए अपने दृश्य/तालिका दृश्य नियंत्रक से

और तार।

Visual representation of outlet connection

सुनिश्चित करें कि आपका ताज़ा कार्रवाई ठीक से विन्यस्त है ...

- (IBAction)refresh:(UIRefreshControl *)sender { 
    [self.refreshControl beginRefreshing]; 

    // Refresh code for your TVC 

    [self.refreshControl endRefreshing]; 
} 

ध्यान दें कि कोई संपत्ति refreshControl के लिए निर्धारित किया जाना आवश्यक है - मुझे लगता है स्वचालित रूप से इस संश्लेषण के लिए एक ट्रिगर है जब आप स्टोरीबोर्ड में अपने टीवीसी विशेषताओं में सेटिंग रीफ्रेशिंग [सक्षम] सेटिंग चुनें।

आप अपने कोड में से ताज़ा फोन इस लाइन का उपयोग करने की जरूरत है ...

[self refresh:self.refreshControl]; 
+4

के बीच यदि मैं इसे सही समझता हूं - यह केवल 'UITableViewController' के उप-वर्ग के लिए काम करता है? लेकिन 'UIViewController' के अंदर' UITableView 'के लिए नहीं? – oyatek

+1

मुझे अभी भी इस तरह कार्यान्वित करते समय एक कूद/झटका मिलता है :( – lostintranslation

+0

@oyatek per [Apple docs] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIRefreshControl_class/) आप सही हैं, ताज़ा नियंत्रण विशेष रूप से तालिका दृश्य में उपयोग के लिए डिज़ाइन किया गया है जिसे तालिका दृश्य नियंत्रक द्वारा प्रबंधित किया जाता है। सुनिश्चित नहीं है कि प्रश्न में दूसरा विकल्प कहां दिया गया है? – andrewbuilder

1

मैं अपने कोड के बाकी को देखने के लिए की आवश्यकता होगी (या कम से कम स्क्रॉल + ताज़ा विधि) के लिए समस्या का निदान करें।

उद्देश्य-सी और त्वरित में नियंत्रण रीफ्रेश करने के लिए कस्टम पुल को लागू करने के लिए हमारा ट्यूटोरियल यहां दिया गया है। यदि आप इस ट्यूटोरियल का पालन करते हैं तो आपको कोई कूद या झटका नहीं दिखना चाहिए।

http://www.jackrabbitmobile.com/design/ios-custom-pull-to-refresh-control/

आशा है कि यह मदद करता है!

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