2011-05-22 94 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