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];