2011-05-22 52 views
0

如何检测UIScrollView帧与主屏幕(滚动时)在两个方向上下相交的时间?我试图这样做:当uiscrollview帧触摸主屏幕边界时检测

- (void)detectScreenBoundsIntersect{ 
    if (CGRectIntersectsRect([myScrollView frame], [[UIScreen mainScreen] bounds])) { 
     NSLog(@"COLLISION"); 
    } 
} 

但这似乎并不奏效!谢谢。

+0

'UIScrollView'对象在滚动时不移动。你想知道内容是否已经到达边缘? – 2011-05-22 15:26:39

+0

谢谢,是的,这是我想:) – funnyCoder 2011-05-22 15:38:10

回答

0

在视图控制器中采用UIScrollViewDelegate协议,并将滚动视图的委托设置为控制器。采用scrollViewDidScroll:方法。

- (void) scrollViewDidScroll:(UIScrollView *)scrollView { 
    if ([self hasReachedAVerticalEdge]) { 
     NSLog(@"At World's End"); 
    } 
} 

- (BOOL) hasReachedAVerticalEdge { 
    CGPoint offset = myScrollView.contentOffSet; 
    CGSize contentSize = myScrollView.contentSize; 
    CGFloat height = myScrollView.frame.size.height; 
    CGFloat width = myScrollView.frame.size.width; 

    if (offset.y == 0 || 
     (offset.y + height) == contentSize.height) { 
     return YES; 
    } 

    return NO; 
} 

这是你在找什么?

检查图像视图是否落入滚动视图的可见部分。

- (BOOL)isContentFrameVisible:(CGRect)aFrame { 
    CGRect visibleRect = CGRectZero; 
    visibleRect.origin = myScrollView.offset; 
    visibleRect.size = myScrollView.frame.size; 

    if (CGRectIntersectsRect(visibleRect, aFrame)) { 
     return YES; 
    } 
} 
+0

感谢您的答复,但这似乎并没有在我的情况下工作! – funnyCoder 2011-05-22 15:50:16

+0

然后我没有得到你要找的东西。你能解释一下吗? – 2011-05-22 16:08:50

+0

我在这个方法里调用了这个方法:' - (void)touchesBegan:(NSSet *)与事件触发:(UIEvent *)事件'只有一个'NSLog'调用,所以我可以看到我在滚动视图到达屏幕边缘。 – funnyCoder 2011-05-22 16:14:22