scrollView的監聽,NSTimer的使用

scrollView的監聽,NSTimer的使用

標籤(空格分隔):ios基礎


  • 設置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];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章