ScrollView代理和NSTimer

来源:互联网 发布:ps cs6 for mac序列号 编辑:程序博客网 时间:2024/06/06 03:45

监听scrollView各种行为的3大步骤(比如让控制器监听scrollView的行为)

  • 设置scrollView的delegate(代理)为控制器对象
scrollView.delegate = 控制器;
  • 控制器要遵守UIScrollViewDelegate协议
@interface 控制器 ()  <UIScrollViewDelegate>@end
  • 控制器要实现UIScrollViewDelegate协议里面的代理方法
#pragma mark - <UIScrollViewDelegate>  代理方法/** *  只要scrollView在滚动,就会调用这个方法(监听scrollView的滚动) */- (void)scrollViewDidScroll:(UIScrollView *)scrollView{    NSLog(@"scrollViewDidScroll");}

代理使用的一般规律

  • 作用:用来监听控件的某些行为
  • 代理:是控制器对象
  • 代理:是id类型,并且是弱指针
  • 代理协议的格式:控件类名Delegate,比如UIScrollViewDelegate、UITextFieldDelegate
  • 代理方法:方法名一般是控件名开头,比如UIScrollView的代理方法一般以scrollView开头

如何监听控件的行为

  • 通过addTarget:
    • 只有继承自UIControl的控件,才有这个功能
    • UIControlEventTouchUpInside : 点击事件(UIButton)
    • UIControlEventValueChanged : 值改变事件(UISwitch、UISegmentControl、UISlider)
    • UIControlEventEditingChanged : 文字改变事件(UITextField)
  • 通过delegate
    • 只有拥有delegate属性的控件,才有这个功能

NSTimer的使用

  • 开启定时器
@property (nonatomic, weak) NSTimer *timer;// 返回一个自动开始执行任务的定时器self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextPage:) userInfo:@"123" repeats:YES];// 修改NSTimer在NSRunLoop中的模式:NSRunLoopCommonModes// 主线程不管在处理什么操作,都会抽时间处理NSTimer[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
  • 关闭定时器
[self.timer invalidate];
0 0