0

UIScrollview が scrollViewDidScroll デリゲート メソッドでスクロールしている間に、クールな CA3DTransform を実行しています。指を使ってスクロールすると完璧に機能するので、手動でスクロールするときはすべて完璧です。

しかし、プログラムで scrollview contentoffset を設定すると、次のようになります。

[scrollView setContentOffSet:CGPointMake(0,460) animated:YES];

それは引き続きデリゲート メソッド scrollviewdidscroll を呼び出すため、同じアニメーション メソッドが呼び出されるため、正しいアニメーションが表示されますが、何らかの理由でビューの一部がアニメーション中およびアニメーション後に失われます。すべてのものにlayer.zPositionを設定しようとしましたが、役に立たないようです。ビューの一部が失われることなく手動でスクロールしても問題ないはずです...どういうわけか、このメソッドをプログラムで呼び出す方法が異なり、その理由がわかりません!

4

2 に答える 2

0

デリゲートscrollViewDidScrollを使用すると、手動またはプログラムでコードを印刷できることを考えると、この方法で質問を投稿することはあまり明確ではありません。

...
UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 10, 320, 200)];
[sv setContentSize:CGSizeMake(640, 200)];
sv.delegate = self;
[sv setContentOffset:CGPointMake(320, 0) animated:YES];
[self.view addSubview:sv];
...

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"---%@---", NSStringFromCGPoint(scrollView.contentOffset));
}

この簡単な例では、デリゲートが実際に機能していることがわかります。答えの単純さを失礼しますが、あなたが尋ねる唯一の質問はあなたに助けを与えるのは難しいです。

于 2012-04-06T14:04:28.407 に答える
0

(スライドショーにスクロールビューを使用するという文脈で)同様の問題がありましたが、scrollRectToVisible:NO(アニメーションがない場合はNO)を使用して解決し、アニメーションコードも配置したUIViewアニメーションブロック内にラップしました。

于 2012-06-26T11:04:43.110 に答える