UIScrollView Delegate 확인
UIScrollView Delegate 메소드를 찾던중 좋은 자료가 있어, 이렇게 퍼왔다^^
출저는 아래와 같다.
원본글 : http://www.ddandongne.com/ddanhome/zbuilder/?mid=iphone_sdk&search_target=tag&search_keyword=UIScrollView&document_srl=2234
- 스크롤만 딸랑 실행될때.
2010-06-15 14:34:08.066 ScrollTest[6591:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:34:08.082 ScrollTest[6591:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:34:08.204 ScrollTest[6591:207] 스크롤이 끝났을때 - scrollViewDidEndDragging
- 스크롤후 서서히 멈출때.
2010-06-15 14:35:27.444 ScrollTest[6591:207] 스크롤이 시작전에 scrollViewWillBeginDragging
2010-06-15 14:35:27.445 ScrollTest[6591:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:35:27.461 ScrollTest[6591:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:35:27.573 ScrollTest[6591:207] 스크롤이 끝났을때 - scrollViewDidEndDragging
2010-06-15 14:35:27.574 ScrollTest[6591:207] scrollViewWillBeginDecelerating
2010-06-15 14:35:27.591 ScrollTest[6591:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:35:27.608 ScrollTest[6591:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:35:28.975 ScrollTest[6591:207] 스크롤이 끝난후, 서서히 속도가 줄며 스크롤뷰가 완전히 멈췄을때 발생 -scrollViewDidEndDecelerating
- top영역을 누를때
2010-06-15 14:46:10.816 ScrollTest[8583:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:46:10.832 ScrollTest[8583:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:46:11.100 ScrollTest[8583:207] TOP영역으로 스크롤이 완료 되었을때 실행. scrollViewDidScrollToTop
- 줌인/줌아웃 발생시
2010-06-15 14:42:47.507 ScrollTest[8583:207] zooming 될때 - viewForZoomingInScrollView
2010-06-15 14:42:56.029 ScrollTest[8583:207] zooming 될때 - viewForZoomingInScrollView
2010-06-15 14:42:56.033 ScrollTest[8583:207] 스크롤이 발생할때 scrollViewDidScroll
2010-06-15 14:42:56.054 ScrollTest[8583:207] zooming 될때 - viewForZoomingInScrollView
2010-06-15 14:42:56.055 ScrollTest[8583:207] zooming 될때 - viewForZoomingInScrollView
2010-06-15 14:42:57.842 ScrollTest[8583:207] 줌인/줌아웃이 끝날때 scrollViewDidEndZooming
2010-06-15 14:42:57.842 ScrollTest[8583:207] zooming 될때 - viewForZoomingInScrollView
2010-06-15 14:42:57.843 ScrollTest[8583:207] zooming 될때 - viewForZoomingInScrollView
2010-06-15 14:42:57.844 ScrollTest[8583:207] 스크롤이 발생할때 scrollViewDidScroll
소스
001.
#import "ScrollTestViewController.h"
002.
#import "testView.h"
003.
004.
@implementation ScrollTestViewController
005.
006.
- (
void
)loadView
007.
{
008.
[super loadView];
009.
010.
// 스크롤 생성하기.
011.
scrollview = [[UIScrollView alloc] initWithFrame:self.view.bounds];
012.
[self.view addSubview:scrollview];
013.
testview = [[testView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
014.
[scrollview addSubview:testview];
015.
[scrollview setContentSize:testview.frame.size];
016.
[scrollview setDelegate:self];
017.
// top 영역을 눌렀을때 이벤트를 발생시킬것인가? scrollViewShouldScrollToTop메소드가 실행됨
018.
scrollview.scrollsToTop =YES;
019.
// 줌처리될때 min, max값.
020.
[scrollview setMinimumZoomScale:0.1];
021.
[scrollview setMaximumZoomScale:50];
022.
023.
// 테스트를 위한 변수 초기화 하기.
024.
offset = CGPointMake(0,0);
025.
026.
[scrollview setZoomScale:2];
027.
screenScale = scrollview.zoomScale;
028.
[scrollview setContentOffset : CGPointMake(100, 0) animated:YES];
029.
}
030.
031.
032.
033.
#pragma mark -
034.
#pragma mark UIScrollViewDelegate
035.
036.
// Decelerating이 시작될때.
037.
- (
void
)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
038.
{
039.
NSLog(@
"scrollViewWillBeginDecelerating"
);
040.
}
041.
042.
// 스크롤이 종료된 후, 서서히 속도가 줄며 스크롤이 완전히 멈췄을때
043.
- (
void
)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView
044.
{
045.
NSLog(@
"스크롤이 끝난후, 서서히 속도가 줄며 스크롤뷰가 완전히 멈췄을때 발생 -scrollViewDidEndDecelerating"
);
046.
offset.x = _scrollView.contentOffset.x/screenScale;
047.
offset.y = _scrollView.contentOffset.y/screenScale;
048.
049.
NSLog(@
"scrollViewDidEndDecelerating %f, %f "
, _scrollView.contentOffset.x, _scrollView.contentOffset.y);
050.
NSLog(@
"scrollViewDidEndDecelerating offset %f, %f "
, offset.x, offset.y);
051.
}
052.
053.
// 스크롤이 종료되었을때( 딱, 마우스를 띄었을때)
054.
- (
void
)scrollViewDidEndDragging:(UIScrollView *)_scrollView
055.
willDecelerate:(
BOOL
)decelerate
056.
{
057.
NSLog(@
"스크롤이 끝났을때 - scrollViewDidEndDragging"
);
058.
offset.x = _scrollView.contentOffset.x/screenScale;
059.
offset.y = _scrollView.contentOffset.y/screenScale;
060.
061.
NSLog(@
"scrollViewDidEndDragging %f, %f "
, _scrollView.contentOffset.x, _scrollView.contentOffset.y);
062.
NSLog(@
"scrollViewDidEndDragging offset %f, %f "
, offset.x, offset.y);
063.
}
064.
065.
066.
067.
// 줌인/줌아웃 처리하기.
068.
- (
void
)scrollViewDidEndZooming:(UIScrollView *)_scrollView
069.
withView:(UIView *)view atScale:(
float
)scale
070.
{
071.
NSLog(@
"줌인/줌아웃이 끝날때 scrollViewDidEndZooming"
);
072.
NSLog(@
"scale ----- %f "
, scale);
073.
[scrollview setZoomScale:scale+0.01 animated:NO];
074.
[scrollview setZoomScale:scale animated:NO];
075.
screenScale = scale;
076.
077.
078.
offset.x = _scrollView.contentOffset.x/screenScale;
079.
offset.y = _scrollView.contentOffset.y/screenScale;
080.
081.
//NSLog(@"scrollViewDidEndZooming offset %f %f ", offset.x, offset.y);
082.
}
083.
084.
// scrollview setContentOffset :animated : YES에 의해서 스크롤 애니메이션이 끝난 경우 발생
085.
// 사용자가 드래그에 의해서 애니메이션이 발생하는 경우 발생하지 않음.
086.
- (
void
)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
087.
{
088.
//[scrollview setContentOffset : CGPointMake(100, 0) animated:YES];
089.
NSLog(@
"scrollview setContentOffset :animated : YES에 의해서 스크롤 애니메이션이 끝난 경우 발생"
);
090.
NSLog(@
"scrollViewDidEndScrollingAnimation"
);
091.
}
092.
093.
094.
095.
096.
097.
// zooming 될때. 스크롤 시키는 뷰를 넘겨줘야 함.
098.
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
099.
{
100.
NSLog(@
"zooming 될때 - viewForZoomingInScrollView"
);
101.
UIView *view = nil;
102.
if
(scrollView == scrollview) {
103.
view = testview;
104.
}
105.
return
view;
106.
}
107.
108.
- (
void
)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
109.
{
110.
NSLog(@
"## - scrollViewWillBeginZooming"
);
111.
}
112.
113.
//
114.
- (
void
)scrollViewDidScroll:(UIScrollView *)scrollView
115.
{
116.
NSLog(@
" 스크롤이 발생할때 scrollViewDidScroll"
);
117.
}
118.
119.
120.
121.
// TOP 영역을 눌렀을때 실행. yes인 경우 자동으로탑영역으로 스크롤 됨.
122.
- (
BOOL
)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
123.
{
124.
NSLog(@
"scrollViewShouldScrollToTop"
);
125.
126.
return
YES;
127.
}
128.
129.
// TOP영역으로 스크롤이 완료 되었을때 실행.
130.
- (
void
)scrollViewDidScrollToTop:(UIScrollView *)scrollView
131.
{
132.
NSLog(@
"TOP영역으로 스크롤이 완료 되었을때 실행. scrollViewDidScrollToTop"
);
133.
}
134.
135.
136.
- (
void
)scrollViewWillBeginDragging:(UIScrollView *)scrollView
137.
{
138.
NSLog(@
"스크롤이 시작전에 scrollViewWillBeginDragging"
);
139.
}
140.
141.
142.
143.
- (
void
)dealloc
144.
{
145.
[super dealloc];
146.
}
147.
@end