UIScrollView代理(delegate)
当UIScrollView滚动或滚动到某个位置,或者停止滚动,我们想做一些特定操作
需要完成这些操作,前提是能够监听UIScrollView整个滚动过程
当UIScrollView发生滚动操作时,会自动通知它的代理(delegate)对象,代理通过接收到的相应消息,得知它的滚动情况
也可以控制某些行为 总结: 想要监听,必须设置一个代理对象,然后通过代理得知滚动过程
代理
代理协议可以写在.h中,也可以下载.m中类扩展后面
要想监听,要实现下列方法
#pragma mark - <UIScrollViewDelegate>
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// NSLog(@"scrollViewDidScroll------");
}
/**
* 即将开始拖拽的时候调用
*/
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDragging------");
}
/**
* 结束拖拽的时候调用
*/
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"scrollViewDidEndDragging------");
}
/**
* (减速完毕)由于惯性停止滚动的时候调用
*/
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidEndDecelerating------");
}
缩放
- 用代理,然后调用缩放的方法
// 设置代理
self.scrollView.delegate = self;
// 缩放比例
self.scrollView.maximumZoomScale = 2.0;
self.scrollView.minimumZoomScale = 0.2;
// 返回值就是需要缩放的控件(只能是UIView的子控件)
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
UITextField
- 输入框也可以使用代理
UITextField *textField = [[UITextField alloc] init]; textField.frame = CGRectMake(29, 370, 170, 29); textField.backgroundColor = [UIColor greenColor]; [self.view addSubview:textField]; self.dog = [[Dog alloc] init]; textField.delegate = self.dog;
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"%@监听到了scrollView的滚动", self);
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// return NO表示不可以输入
if ([string isEqualToString:@"0"]) return NO;
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"textFieldDidBeginEditing");
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSLog(@"textFieldDidEndEditing");
}
.......