2014-10-10 71 views
0

我有一個UIScrollView滑動內UIView。滑動UIView應該能夠到達導航欄的頂部,並且如果用戶仍在拖動他們的手指,則內部的UIScrollView也應該開始向上滑動。同樣,如果您向下滑動UIScrollView並且您到達內容的頂部,則滑動UIView應該開始滑落。如何將平移手勢事件重定向到父視圖?

我不能讓這種行爲按我希望的方式工作。我特別使用Xamarin.iOS庫,但如果有人可以用這個方法指向正確的方向,我可以將Objective-C翻譯成C#。

謝謝!

回答

0

您可能可以通過自定義代理和scrollViewDidScroll:方法來完成此操作。

在這個方法中,檢查你是否已經到達了UIScrollView的邊界......如果你有任何你需要的變量傳遞給委託(這是UIView),UIView將處理這些信息你想要的方式。

實施例:

UIView.m

[self.myScrollView setScrollDelegate:self]; 

ScrollView.h

@protocol ScrollViewDelegate : <NSObject> 

@optional 
- (void)scrollViewDidScrollToEnd:(needed parameters here); 

@end 

ScrollView.m

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if ([HAS REACHED END OF CONTENT]) { 
     // Here we want to pass the scrolling position to the delegate 
     if (!!scrollviewdelegate && [scrollviewdelegate respondsToSelector:@selector(scrollViewDidScrollToEnd:)]) { 
      [scrollviewdelegate scrollViewDidScrollToEnd:(needed parameters here)]; 
     } 
    } 
} 
0

首先滑動的UIView應的邊界內滑動它的超級視圖。其次,當滑動UIView時,滾動視圖的手勢應該失敗,直到Sliding UIView位於其超級視圖的頂部或底部。這些可以通過實現UIGestureRecognizer協議的shouldBeRequiredToFailByGestureRecognizer方法來完成。

這裏我上傳了一個sample project。裏面的scrollview是一個tableview。

相關問題