2014-10-10 58 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。

相关问题