UIScrollViewDelegate-委托方法API

UIScrollViewDelegate-委托方法API

在iOS编程中,经常用到UIScrollView控件。自然也会用到UIScrollViewDelegate协议。

今天就抽空,研究了一下UIScrollViewDelegate中所有的委托方法。

仅做Mark!如有,错误之处,欢迎留言指正,交流!

贴:

#pragma mark - UIScrollViewDelegate 委托

//scrollView滚动时,就调用该方法。任何offset值改变都调用该方法。即滚动过程中,调用多次

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

NSLog(@"scrollViewDidScroll");

CGPoint point=scrollView.contentOffset;

NSLog(@"%f,%f",point.x,point.y);

// 从中可以读取contentOffset属性以确定其滚动到的位置。

// 注意:当ContentSize属性小于Frame时,将不会出发滚动

}

// 当scrollView缩放时,调用该方法。在缩放过程中,回多次调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{

NSLog(@"scrollViewDidScroll");

float value=scrollView.zoomScale;

NSLog(@"%f",value);

}

// 当开始滚动视图时,执行该方法。一次有效滑动(开始滑动,滑动一小段距离,只要手指不松开,只算一次滑动),只执行一次。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

NSLog(@"scrollViewWillBeginDragging");

}

// 滑动scrollView,并且手指离开时执行。一次有效滑动,只执行一次。

// 当pagingEnabled属性为YES时,不调用,该方法

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{

NSLog(@"scrollViewWillEndDragging");

}

// 滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动,只执行一次。

// decelerate,指代,当我们手指离开那一瞬后,视图是否还将继续向前滚动(一段距离),经过测试,decelerate=YES

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

NSLog(@"scrollViewDidEndDragging");

if (decelerate) {

NSLog(@"decelerate");

}else{

NSLog(@"no decelerate");

}

CGPoint point=scrollView.contentOffset;

NSLog(@"%f,%f",point.x,point.y);

}

// 滑动减速时调用该方法。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{

NSLog(@"scrollViewWillBeginDecelerating");

// 该方法在scrollViewDidEndDragging方法之后。

}

// 滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动,只执行一次。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

NSLog(@"scrollViewDidEndDecelerating");

[_scrollView setContentOffset:CGPointMake(0, 500) animated:YES];

}

// 当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{

NSLog(@"scrollViewDidEndScrollingAnimation");

// 有效的动画方法为:

//    - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 方法

//    - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 方法

}

// 返回将要缩放的UIView对象。要执行多次

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

NSLog(@"viewForZoomingInScrollView");

return  self.imgView;

}

// 当将要开始缩放时,执行该方法。一次有效缩放,就只执行一次。

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{

NSLog(@"scrollViewWillBeginZooming");

}

// 当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{

NSLog(@"scrollViewDidEndZooming");

}

// 指示当用户点击状态栏后,滚动视图是否能够滚动到顶部。需要设置滚动视图的属性:_scrollView.scrollsToTop=YES;

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{

return YES;

}

// 当滚动视图滚动到最顶端后,执行该方法

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{

NSLog(@"scrollViewDidScrollToTop");

}

时间: 2024-10-08 00:16:04

UIScrollViewDelegate-委托方法API的相关文章

取消事件所有委托方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.ComponentModel; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ProtocolEvent c = new Protoc

多种方法求最大值(委托方法,重载)

1 namespace ConsoleAppLearningCeshi 2 { 3 /// <summary> 4 /// 不同打招呼 5 /// </summary> 6 /// <param name="name"></param> 7 public delegate int deleMaxCompara<T>(T one, T two);//泛型委托 8 public delegate int deleMaxCompar

委托+内置委托方法

委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字段和方法组成的,然后使用这个类实例化对象.在我们使用委托的时候,也需要经过这两个阶段,首先定义委托,告诉编译器我们这个委托可以指向哪些类型的方法,然后,创建该委托的实例. 定义委托的语法如下: delegate void IntMethodInvoker(int x); 定义了一个委托叫做IntMe

前端-【学习心得】-事件委托方法

上篇分享提出的这个事件委托,今天让我来详细说明下把. 先看一段例子: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta

UITableView SDK委托方法详解

今天跟大家分享一下UITableView的各个代理方法的用法,主要是根据SDK里面的介绍,再加上自己的分析与测试,总结成此文.如果有疑问的话,希望大家留言告诉我~ 本文主要讲解对于UITableView最重要的两个协议 UITableViewDataSource UITableViewDelegate UITableViewDataSource 1)tableView:cellForRowAtIndexPath: 申请一个cell插入到表视图特定的位置,cell生成访问到的方法. 2)numbe

清除事件所有委托方法

问题背景 在做winform报表开发时,FastReport是一个很好的工具,它提供了一些封装好的控件,可以很方便快速的开发打印报表.其中有一个控件是用于预览报表的,所有功能按钮事件方法都是封装好的. 一般情况下这些功能按钮封装好的事件能满足基本的使用,不需要写多余的代码,但是在实际使用过程中,经常会遇到一些需要保存打印记录等操作情景,原有的按钮事件无法满足,就有了需要替换掉原按钮事件调用的方法的需求. 解决方案 因为控件是封装好的,无法直接知道事件具体调用哪些方法,通过 -= 的方式取消订阅事

JS事件冒泡机制以及委托方法,以及vue中的stop

要理解事件冒泡机制,就得先了解事件. 浏览器是事件驱动型的,根据用户的行为触发不同的事件,根据事件执行相应的操作.我们较为熟悉的事件有三大类型:鼠标键盘事件.页面事件.表单相关事件. 鼠标键盘事件:onclick.ondbclick.onmousedown.onmouseup.onmouseover.onmousemove.onmouseout.onkeypress.onkeydown.onkeyup: 页面事件:onload.onunload.onresize.onerror.onabort:

UITextFielddelegate委托方法注释

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ //返回一个BOOL值,指定是否循序文本字段开始编辑 return YES; } - (void)textFieldDidBeginEditing:(UITextField *)textField{ //开始编辑时触发,文本字段将成为first responder } - (BOOL)textFieldShouldEndEditing:(UITextField *)text

无cmd命令行下添加用户的方法:API添加用户与Shell.Users

之前有个html" target=_blank>xp下利用控制面板的cpl文件留后门,然后又有了用.cpl文件加账号的技术,lcx真的很厉害 今天研究了一下用户控制面板文件nusrmgr.cpl,发现调用的是Shell.Users来加用户,它还同时调用了wscript.shell.Shell.Application.Shell.LocalMachine这三个组件.不过加用户的话,这一个Shell.Users就足够了.那么可能在删掉了net.exe和不用adsi之外,这也可能是一种新的加用户