2013-07-09 9 views
1

나는 이라는 UIScrollView의 대리자 인 UIViewController이 있습니다. scrollview의 대리자를보기 컨트롤러로 설정했지만 scrollview가 스크롤 될 때마다 scrollViewDidScroll:에 대한 호출이 없습니다.scrollViewDidScroll이 호출되지 않음

UIViewController 헤더 파일 (Game) :

@interface Game : UIViewController <LocDelegate, UIScrollViewDelegate, ResultsDelegate> { 
    ... 
    NumberLineScroll* nline; 
    ... 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView; 
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale; 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; 
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 

과 방법이 구현 된 주요 파일의 구성 요소 : 여기

- (void)viewDidLoad { 

... 
nline = [[NumberLineScroll alloc] initWithFrame: CGRectMake(0, -50, 1024, 400)]; 
[nline setScrollEnabled:YES]; 
[nline setContentSize:CGSizeMake(4100, 400)]; 
[self.view addSubview:nline]; 
nline.delegate = self; 
nline.locDelegate = self; //this is for a Ball imageview that is implemented in NumberLineScroll 
... 

} 

을하고는 UIScrollView의 구현입니다 여기에 구현입니다 (NumberLineScroll) :

헤더 파일 :

@interface NumberLineScroll : UIScrollView { 

    NumberLine* nline; 
    Ball* ball; 
    id <UIScrollViewDelegate> delegate; 
    id <LocDelegate> locDelegate; 
} 

@property(nonatomic, assign)id <UIScrollViewDelegate> delegate; 
@property(nonatomic, assign)id <LocDelegate> locDelegate; 

주 파일과 관련성이 높은 것은 없습니다. 스크롤링에 영향을 미치는 유일한 프로그래밍은 바운스를 끄고 볼이 사용자에 의해 이동 될 때 스크롤을 해제 한 다음 끝날 때 다시 스크롤하는 것입니다. 또한 locDelegate은 문제가되지 않습니다. 주된 문제는 NumberLineScroll이 위임 호출을하지 않는다는 것입니다. 왜 이런거야?

또한 NumberLineScrollNumberLine보기는 설명을 위해 스크롤보기의 콘텐츠보기입니다.

답변

2

내 생각에 여기속성을 클래스에 재정의했습니다. @property(nonatomic, assign)id <UIScrollViewDelegate> delegate; 행을 삭제 해보십시오. * .m 파일에 문이 있으면 해당 파일도 삭제하십시오. 또한 다음 변수 선언을 삭제하십시오 : id <UIScrollViewDelegate> delegate;.

마지막으로, 측면 설명과 마찬가지로 프로토콜 (예 : UIScrollViewDelegate)을 준수하면 * .h 파일에 구현 한 메서드를 선언하지 않습니다. 그래서, 당신의 Game 클래스에 다음과 같은 라인이 필요하지 않습니다 :

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
- (UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView; 
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale; 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; 
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 

희망이 도움이!

+0

좋아, 그게 해결 됐어. 고맙습니다! – RaysonK

+0

당신을 진심으로 환영합니다! – LuisCien

관련 문제