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");
}

.......

results matching ""

    No results matching ""