gpt4 book ai didi

cocoa - 将scrollViewDidScroll与多个UIScrollView一起使用

转载 作者:行者123 更新时间:2023-12-03 16:16:03 26 4
gpt4 key购买 nike

我有两个水平滚动的 UIScrollViews,在一个 ViewController 中垂直堆叠在一起。每个 UIScrollView 占据一半屏幕。我正在尝试独立跟踪两个 UIScrollViews 的位置。

我已经成功地使用它来跟踪顶部 UIScrollView 的位置:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView1 {

int Position = (scrollView1.contentOffset.x);

if (Position == 0) {
NSLog(@"Play A");
}

else if (Position == 280) {
NSLog(@"Play B");
}

//etc.
}

我也想跟踪底部 UIScrollView 的位置。

当我尝试使用它时:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView2 {

int Position2 = (scrollView2.contentOffset.x);

if (Position2 == 0) {
NSLog(@"Play A2");
}

else if (Position == 280) {
NSLog(@"Play B2");
}

//etc.
}

我收到一条错误消息,内容为“重新定义 FirstViewConroller rollViewDidScroll”。

因此,决心继续前进,我尝试了一个相当黑客的解决方案,并尝试使用它:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView2

{

int Position2 = (scrollView2.contentOffset.x);

if (Position2 == 0) {
NSLog(@"Play A2");
}

else if (Position2 == 280) {
NSLog(@"Play B2");
}

//etc.
}

问题在于,当我移动任一 UIScrollView 时,它会触发两种方法。例如,如果我将底部 UIScrollView 280 像素(一张图像)向右移动,我在控制台中得到的输出是:

PlayB
播放B2

如果我将顶部 UIScrollView 的三个图像向右移动,我得到的输出是:

PlayC
玩C2

这对我来说没有任何意义。

我想我可能会遇到自己对代表如何工作的不完全理解。在 viewDidLoad 方法中,我同时设置:

scrollView1.delegate = self;
scrollView2.delegate = self;

也许这就是问题的一部分?也许我通过声明两个 ScrollView 具有相同的委托(delegate)而造成麻烦?只是不确定。

我还尝试将所有条件语句合并到一个方法中 - 但我只想跟踪底部 UIScrollView 移动时的位置和顶部 UIScrollView 移动时的位置,并将逻辑全部放在在一种方法中,当任一者移动时报告两个位置,这不是我正在寻找的。

感谢任何帮助。我很想解决这个特定的问题,但也很想了解我如何解决这个问题的任何更大问题。这方面还是新的。一直以为我已经掌握了窍门,然后我遇到了一些阻止我前进的事情..

最佳答案

这正是 UIScrollView 参数的用途。在IB中创建与scrollView1和scrollView2的连接,然后执行以下操作:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

if (scrollView1 == scrollView) {
// Do stuff with scrollView1
} else if (scrollView2 == scrollView) {
// Do stuff with scrollView2
}
}

关于cocoa - 将scrollViewDidScroll与多个UIScrollView一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com