如何将scrollViewWillBeginDragging限制为只有一个发送者对象?

时间:2011-02-21 18:34:16

标签: iphone objective-c xcode ipad ios

我已经构建了一个嵌套的滚动视图。在view.xib中,在视图中有一个带有垂直滚动的scrollview,名为rootScroll。在这一个中还有另外两个带有水平滚动的滚动视图,名为topScroll和bottomScroll。

我的目标是当用户拖动topScroll时淡出bottomScroll,并在减速结束时再次淡入。

到目前为止,代码工作正常。唯一的问题是scrollViewWillBeginDragging从所有三个UIScrollViews获取消息。我已经记录了发件人并且可以看到它们有所不同,但无论如何我不知道如何将动画仅限制为topScroll发送的消息!

如何区分scrollViewWillBeginDragging中的不同发件人?

可能是一个客观c绝对的初学者问题。我希望有人会给我一个暗示。

谢谢你!

- (void)viewDidLoad {
    [super viewDidLoad];

    // rootScroll
    [rootScroll setScrollEnabled:YES];
    [rootScroll setContentSize:CGSizeMake(1024, 1980)];

    // topScroll    
    [topScroll setScrollEnabled:YES];
    [topScroll setContentSize:CGSizeMake(3072, 406)];

    // bottomScroll
    [bottomScroll setScrollEnabled:YES];
    [bottomScroll setContentSize:CGSizeMake(3072, 188)];
}


- (void)scrollViewWillBeginDragging:(UIScrollView *)sender
{
    NSLog(@"will begin dragging, %i", sender);

    [UIScrollView beginAnimations:nil context:nil];
    [UIScrollView setAnimationDuration:0.15f];
    [self.bottomScroll setAlpha:0.0];
    [UIScrollView commitAnimations];

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender
{
    NSLog(@"end position");

    [UIScrollView beginAnimations:nil context:nil];
    [UIScrollView setAnimationDuration:1.5f];
    [self.bottomScroll setAlpha:1.0];
    [UIScrollView commitAnimations];

}

1 个答案:

答案 0 :(得分:1)

在Interface Builder中设置滚动视图的tag属性。然后,您可以在方法中使用[sender tag]来区分它们。