1

これに対する答えはおそらく私の鼻のすぐ下にありますが、私には見えません。ここにいる誰かが助けてくれるかもしれません。

垂直スクロールを可能にする scrollView があります。私はそれを設定しました:

[clefScrollView addSubview:clefView];
[clefScrollView setContentSize:CGSizeMake(clefView.frame.size.width, clefView.frame.size.height)];
clefScrollView.showsVerticalScrollIndicator = YES;
clefScrollView.showsHorizontalScrollIndicator = NO;
clefScrollView.delegate = self;

UIScrollViewDelegate プロトコルをサポートするために、同じファイルに次のメソッドが含まれています。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    NSLog(@"%f %f", scrollView.contentOffset.y, scrollView.contentSize.height);
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidEndDecelerating");
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidEndScrollingAnimation");
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"scrollViewDidScroll");
}

さらに、私のクラスの .h ファイルにはプロトコルが含まれています。

@interface ClefNotesViewController : UIViewController <UIActionSheetDelegate,UIScrollViewDelegate,DoneWithVCDelegate> {

問題は、次の 2 つが呼び出されないことです。

    -scrollViewDidEndDecelerating
    -scrollViewDidScroll

他の 2 つのメソッドは、異なるイベントに応答して呼び出されます。2 つのプロトコル メソッドが呼び出されていることを考えると、デリゲートを自分自身に正しく設定したと仮定します。それで、問題は何ですか?

ありがとう!

更新: 問題は見つかりましたが、解決方法はまだわかりません。私のクラスは 2 つのファイルにまたがっています。2 番目のファイルでは、別の scrollView が -scrollViewDidEndDecelerating -scrollViewDidScroll を実装しています。

問題は、同じクラスで、2 つの異なる UIScrollView に対して 2 つの異なるメソッド セットを定義するにはどうすればよいかということです。

同じデリゲート メソッドで 2 つの scrollView を処理しようとすることもできますが、scrollView のファイルでデリゲートの各セットを保持することができないため、これは見苦しいものです。クラスを分割することもできました。別の方法はありますか?

4

2 に答える 2

3

ポインターをメソッドに渡されたものと比較するだけです

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if(scrollView == self.firstScrollView){
          // do something
    }
    else if(scrollView == self.secondScrollView){
          // do something else
    }
}

これは、スクロールビューがクラスのプロパティであると想定しています。ここでは、ポインターの比較は問題ないと確信しています。問題が発生した場合は、次のようなものを使用してください

if(scrollView.tag == self.firstScrollView.tag)

作成時にタグを割り当てる必要があります

于 2010-03-03T12:57:20.233 に答える
1

問題は、同じクラスで、2 つの異なる UIScrollView に対して 2 つの異なるメソッド セットを定義するにはどうすればよいかということです。

デリゲート メソッドは、スクロールビュー オブジェクトをパラメーターとして受け入れます。どのスクロールビューが渡されているかを確認し、それに応じて応答する必要があります。それらを識別するために、各スクロールビューのタグプロパティを設定できます。

于 2010-03-03T12:38:09.860 に答える