1.<UIScrollViewDelegater> 代理設(shè)計(jì)模式
很多時(shí)候搞挣,我們想在UIScrollView正在滾動(dòng) 或 滾動(dòng)到某個(gè)位置 或者 停止?jié)L動(dòng) 時(shí)做一些特定的操作
要想完成上述功能,前提條件就是能夠監(jiān)聽(tīng)到UIScrollView的整個(gè)滾動(dòng)過(guò)程
當(dāng)UIScrollView發(fā)生一系列的滾動(dòng)操作時(shí)音羞, 會(huì)自動(dòng)通知它的代理(delegate)對(duì)象囱桨,給它的代理發(fā)送相應(yīng)的消息,讓代理得知它的滾動(dòng)情況
也就是說(shuō)嗅绰,要想監(jiān)聽(tīng)UIScrollView的滾動(dòng)過(guò)程舍肠,就必須先給UIScrollView設(shè)置一個(gè)代理對(duì)象搀继,然后通過(guò)代理得知UIScrollView的滾動(dòng)過(guò)程
UIScrollView和delegate的通信:
在OC中,發(fā)送消息的意思就是調(diào)用方法
因此UIScrollView和delegate的通信可以理解為下圖所示:
再精確一點(diǎn)貌夕,UIScrollView和delegate的通信應(yīng)該為下圖所示:
可以看出,要想成為UIScrollView的delegate民镜,是有條件的啡专,必須實(shí)現(xiàn)對(duì)應(yīng)的方法才能監(jiān)聽(tīng)UIScrollView的滾動(dòng)過(guò)程
UIScrollView將delegate需要實(shí)現(xiàn)的方法都定義在了UIScrollViewDelegate協(xié)議中,
因此要想成為UIScrollView的delegate制圈,必須遵守UIScrollViewDelegate協(xié)議们童,
然后實(shí)現(xiàn)協(xié)議中相應(yīng)的方法,就可以監(jiān)聽(tīng)UIScrollView的滾動(dòng)過(guò)程了
2.UIScrollView和控制器
一般情況下鲸鹦,就設(shè)置UIScrollView所在的控制器 為 UIScrollView的delegate
設(shè)置控制器為UIScrollView的delegate有2種方法:
1>通過(guò)代碼(self就是控制器)
self.scrollView.delegate = self;
2>通過(guò)storyboard拖線(右擊UIScrollView)
然后慧库,控制器應(yīng)該遵守<UIScrollViewDelegate>
協(xié)議
@interface ViewController : UIViewController <UIScrollViewDelegate>
@property (weak,nonatomic) IBOutlet UIScrollView *scrollView;
@end
@implementation ViewController
//實(shí)現(xiàn)<UIScrollViewDelegate>中的方法
@end
最后,實(shí)現(xiàn)協(xié)議中定義的相關(guān)方法