2012-06-11 5 views
5

मैं scrollViewDidEndDecelerating कहा जाता है करने के लिए नहीं लग सकता है। मेरे पास 2 दृश्यों के साथ एक स्क्रॉल व्यू है। अब मुझे स्क्रॉलव्यू समाप्त होने पर दूसरे दृश्य में स्क्रॉल करने पर पहले दृश्य में एक लेबल को मान सेट करने की आवश्यकता है।scrollViewDidEndDecelerating क्रियान्वित नहीं

हैडर फ़ाइल:

@interface ViewController: UIViewController 
{ 
    UIScrollView *scrollView; 
    UIView *view1; 
    UIView *view2; 
} 

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView; 
@property (strong, nonatomic) IBOutlet UIView *view1; 
@property (strong, nonatomic) IBOutlet UIView *view2; 
@property (weak, nonatomic) IBOutlet UILabel *lbl; 

कार्यान्वयन फ़ाइल:

@synthesize scrollView, view1, view2; 

-(void)viewDidLoad 
{ 
    self.view1=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    self.view2=[[UIView alloc] initWithFrame:CGRectMake(320, 0, 320, 480)]; 

    [self.scrollView addSubView:self.view1]; 
    [self.scrollView addSubView:self.view2]; 

    self.scrollView.bounces=NO; 
    self.scrollView.contentSize=CGSizeMake(640,460); 
    [self.scrollView setShowHorizontalScrollIndicator:NO]; 
    [self.scrollView scrollRectToVisible:CGRectMake(0, 0, 320, 416) animated:NO]; 
} 

-(void)scrollViewDidEndDecelerating:(UIView *)scrollView 
{ 
    [email protected]"0"; 
} 

मैंने कुछ गलत है, यह काम करना चाहिए नहीं दिख रहा। क्या कोई मेरी मदद कर सकता है? इसकी सराहना करेंगे।

+3

क्या आपने स्क्रॉलव्यू प्रतिनिधि सेट किया था? – Felix

+1

इसकी प्रकृति से, उसने नहीं किया। –

+0

एचएम, नहीं, मैंने प्रतिनिधि फ़ाइल में कुछ भी नहीं जोड़ा है। मैं इसे कैसे सेट करूं? केवल प्रतिनिधि विधि के साथ एनिमेटेड कार्यक्रम संबंधी स्क्रॉल से बुलाया जाता है कि: नहीं है '-scrollViewDidScroll: धन्यवाद :) – iamruskie

उत्तर

3

यह करना होगा:

हैडर फ़ाइल:

@interface ViewController: UIViewController <UIScrollViewDelegate> //promise that you'll act as scrollView's delegate 
{ 
    UIScrollView *scrollView; 
    UIView *view1; 
    UIView *view2; 
} 

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView; 
@property (strong, nonatomic) IBOutlet UIView *view1; 
@property (strong, nonatomic) IBOutlet UIView *view2; 
@property (weak, nonatomic) IBOutlet UILabel *lbl; 

कार्यान्वयन फ़ाइल:

@synthesize scrollView, view1, view2; 

-(void)viewDidLoad 
{ 
    self.view1=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    self.view2=[[UIView alloc] initWithFrame:CGRectMake(320, 0, 320, 480)]; 

    [self.scrollView addSubView:self.view1]; 
    [self.scrollView addSubView:self.view2]; 

    self.scrollView.bounces=NO; 
    self.scrollView.contentSize=CGSizeMake(640,460); 
    [self.scrollView setShowHorizontalScrollIndicator:NO]; 
    [self.scrollView scrollRectToVisible:CGRectMake(0, 0, 320, 416) animated:NO]; 
    [self.scrollView setDelegate:self];//Set delegate 
} 

-(void)scrollViewDidEndDecelerating:(UIView *)scrollView 
{ 
    [email protected]"0"; 
} 
+0

बिल्कुल सही। धन्यवाद :) – iamruskie

+1

हमेशा स्वागत है;) – Ahmed

+0

हे आखिरी बात, मैं व्यू 2 की एक्स स्थिति कैसे देखूं? – iamruskie

3

या तो स्क्रॉलव्यू की प्रतिनिधि संपत्ति को इंटरफ़ेस बिल्डर में फ़ाइल के स्वामी ऑब्जेक्ट से कनेक्ट करें या बस अपने ViewController के ViewDidLoad में प्रतिनिधि को मैन्युअल रूप से सेट करें।

scrollview.delegate = self 
19

scrollViewDidEndDecelerating (यानी स्क्रॉल दृश्य अगर उपयोगकर्ता धीरे स्क्रॉल है नहीं बुलाया जाता है स्पर्श पर स्क्रॉल करना जारी नहीं है)। उस स्थिति में आप scrollViewDidEndDragging को कॉल कर सकते हैं। तो जब कुछ उपयोगकर्ता स्क्रॉल करना बंद कर देता है और स्क्रॉलव्यू बंद कर देता है तो आप उन्हें गठबंधन कर सकते हैं:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if(!decelerate) [self endOfScroll]; 
} 

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 
    [self endOfScroll]; 
} 

-(void)endOfScroll 
{ 
//Do something 
} 
संबंधित मुद्दे