crg*_*rgt 3 xcode cocoa cocoa-touch uiscrollview
我有两个水平滚动的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.
}
Run Code Online (Sandbox Code Playgroud)
我想跟踪底部UIScrollView的位置.
当我尝试使用它时:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView2 {
int Position2 = (scrollView2.contentOffset.x);
if (Position2 == 0) {
NSLog(@"Play A2");
}
else if (Position == 280) {
NSLog(@"Play B2");
}
//etc.
}
Run Code Online (Sandbox Code Playgroud)
我收到一条错误,上面写着"重新定义FirstViewConroller scrollViewDidScroll".
因此,我决定坚持下去,我尝试了一个相当hackish的解决方案,并尝试使用它:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView2
{
int Position2 = (scrollView2.contentOffset.x);
if (Position2 == 0) {
NSLog(@"Play A2");
}
else if (Position2 == 280) {
NSLog(@"Play B2");
}
//etc.
}
Run Code Online (Sandbox Code Playgroud)
这个问题是当我移动任何一个UIScrollViews时它会触发这两个方法.例如 - 如果我将底部UIScrollView 280像素(一个图像)向右移动,我在控制台中获得的输出是:
PlayB
PlayB2
如果我向右移动顶部UIScrollView三个图像,我得到的输出是:
PlayC
PlayC2
这对我没有任何意义.
我想我可能会碰到我对代表工作方式的不完全理解.在viewDidLoad方法中,我设置了两个:
scrollView1.delegate = self;
scrollView2.delegate = self;
Run Code Online (Sandbox Code Playgroud)
也许这是问题的一部分?也许我通过声明两个scrollViews具有相同的委托来引起麻烦?只是不确定.
我也尝试了所有我的条件语句组合成一个方法 - 但我只希望跟踪底部的UIScrollView的位置在移动时,它移动时,顶部的UIScrollView的位置,并把逻辑都在同一个方法报告两个位置,当任何一个移动,这不是我正在寻找的.
任何帮助表示赞赏.很想解决这个特殊的问题,但也非常想了解我接近这个问题的任何更大的问题.还是新的.一直在想我已经掌握了它,然后我遇到了一些让我陷入困境的东西......
kpe*_*yua 14
这正是UIScrollView参数的用途.在IB中创建与scrollView1和scrollView2的连接,然后执行以下操作:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView1 == scrollView) {
// Do stuff with scrollView1
} else if (scrollView2 == scrollView) {
// Do stuff with scrollView2
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9049 次 |
| 最近记录: |