scrollViewDidEndDecelerating没有执行

iam*_*kie 8 iphone xcode xcode4

我似乎无法调用scrollViewDidEndDecelerating.我有一个带有2个视图的scrollView.现在我需要它在滚动视图完成滚动到第二个视图时在第一个视图中为标签设置一个值.

头文件:

@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;
Run Code Online (Sandbox Code Playgroud)

实施档案:

@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
{
   lbl.text=@"0";
}
Run Code Online (Sandbox Code Playgroud)

我没有看到任何错误,它应该工作.有人可以帮我吗?会很感激.

Ste*_*ten 27

如果用户缓慢滚动(即滚动视图在触摸时不继续滚动),则不会调用scrollViewDidEndDecelerating.在这种情况下,您可以调用scrollViewDidEndDragging.因此,当用户停止滚动并且滚动视图已停止时,您可以将它们组合起来:

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

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

-(void)endOfScroll{
  //Do something
}
Run Code Online (Sandbox Code Playgroud)


Dcr*_*lli 5

将滚动视图的委托属性连接到 Interface Builder 中的 File's Owner 对象,或者只是在 ViewController 的 ViewDidLoad 中手动设置委托。

scrollview.delegate = self
Run Code Online (Sandbox Code Playgroud)


Ahm*_*med 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;
Run Code Online (Sandbox Code Playgroud)

实施文件:

@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
{
   lbl.text=@"0";
}
Run Code Online (Sandbox Code Playgroud)