1

と呼ばれるUIViewControllerのデリゲートである があります。スクロールビューのデリゲートをビューコントローラーに設定しましたが、スクロールビューがスクロールされるたびに呼び出しがありません。実装は次のとおりです。UIScrollViewNumberLineScrollscrollViewDidScroll:

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デリゲート呼び出しを行わないことです。どうしてこれなの?

また、明確にするために、NumberLineビューはスクロールビューのコンテンツビューです。NumberLineScroll

4

1 に答える 1

3

ここでの私の最善の推測は、クラスdelegate内でプロパティを再定義していることです。NumberLineScroll行を削除してみてください( *.m ファイルにステートメント@property(nonatomic, assign)id <UIScrollViewDelegate> delegate;がある場合は、それも削除してください)。@synthesizeまた、次の変数宣言を削除します: 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;

お役に立てれば!

于 2013-07-10T00:00:15.090 に答える