iPhone开发之UIScrollView滚动组件的使用(五) 通过代理监听滚动事件

案例:实现滚动的时候输出当前滚动的位置
1、思考:
(1)获取当前滚动的位置:scrollView.contentOffset
(2)要想实现滚动的时候显示当前滚动的位置,那么就一定要监听滚动事件。
(3)问题:如何监听滚动事件? 答:通过代理监听
监听事件的另外一种方式:代理。之前学过的一种方式是:addTarget的方式。
2、UIScrollView的代理属性介绍
(1)UIScrollView和它的代理对象是通过delegate属性关联起来的。通过指定UIScrollView的delegate属性,告诉UIScrollView那个对象要成为UIScrollView的代理对象。
(2)代理对象中会有很多方法。
3、UIscrollView设置代理的具体过程:
(1)首先为UIScrollView设置代理对象,self.scrollView.delegate=代理对象。
(2)让代理对象所属的类遵守UIScrollViewDelegate协议
(3)在代理对象所属的类中增加UIScrollViewDelegate中的回调方法并进行实现。
注意:
(一)一般组件对象的代理对象都设置为self,也就意味着要让当前控制器类遵守组件对象的协议,并在组件所在控制器类的.m文件中实现协议中所需要的方法。也就是说不需要单独再创建一个代理类与代理对象,直接将控制器作为控制器的代理对象即可。
(二)为了保证对象中拥有相应的方法,所以必须让代理对象(控制器自己)遵守对应控件的代理协议。(当前控制器要作为哪个控件的代理对象,那么控制器就要遵守这个控件的代理协议)
(三)一般控件协议的命名规则都是:控件名Delegate(UIScrollViewDelegate,UIAlertViewDelegate)
(四)在代理类(控制器类)的.m文件中实现协议中的方法。
4、UIScrollViewDelegate协议中的三个重要方法:
(1)scrollViewWillBeginDragging方法 (当用户开始拖拽调用)
(2)scrollViewDidScroll方法 (当用户正在拖拽的过程中触发)
(3)scrollViewEndDragging (当用户拖拽完成后调用)
注意:
(一)当用户对UIScrollView组件进行不同操作时就会触发调用代理对象中实现的代理协议内的方法。
(二)当一个控制器的view内有多个UIScrollView组件要进行调用协议中的回调方法时,就需要为这些UIScrollView对象分别设置不同的额Tag值,在代理对象实现协议中的方法时就要根据不同的Tag值进行组件的不同触发操作。
5、为组件设置代理的两种方式:

(方式一)拖线进行设置代理。点击控件按住crtl键脱线连接到组件列表(即场景中)自身的控制器上即可。或右键点击delegate连接到自身的控制器即可。如下图所示:


(方式二)设置控件的代理对象为自身的控制器即
self.控件对象.delegate=self;
6、切记:每个控件的坐标是相对于父控件左上角的坐标而言的。也就是说,子类控件的坐标是以父控件左上角坐标为原点进行计算的。

例如:UIScrollView中一个UIImageView控件的坐标是(14,20)表示的是这个图片控件左上角坐标在在x方向上比父控件UIScrollView的左上角坐标多出14,在Y方向上比父控件多出20.就是说子控件在父控件右边14像素,下边20像素处。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值