次の 2 つの UIScrollView デリゲート メソッドを使用して、UIViewController で別のメソッドを呼び出しています。
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// do something
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
// do something
}
//do something を呼び出すさまざまな方法を試してみましたが、両方とも呼び出されないか、両方のデリゲート メソッドが呼び出されて、特定の状況で //do something を 2 回呼び出すことになります。例えば:
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if(![scrollView isDecelerating] && ![scrollView isDragging]){
//do something
}
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
if(!decelerate){
//do something
}
}
したがって、上記でスクロールしてゆっくりと停止すると、scrollViewDidEndDecelerating: が呼び出されますが、スクロールしてタップで停止すると、scrollViewDidEndDragging: と scrollViewDidEndDecelerating: の両方が呼び出されます。
どちらかを呼び出したい... scrollViewDidEndDecelerating: と scrollView オブジェクトでこのダブルメソッド呼び出しを停止することができますか?