如何将平移手势事件重定向到父视图?

时间:2014-10-10 16:47:58

标签: ios xamarin

我在滑动UIScrollView内有一个UIView。滑动UIView应该能够到达导航栏的顶部,如果用户仍在拖动他们的手指,内部的UIScrollView也应该开始向上滑动。同样,如果您向下滑动UIScrollView并到达内容的顶部,则滑动UIView应该开始向下滑动。

我无法按照我想要的方式运行此行为。我是专门使用Xamarin.iOS库的,但我可以将Objective-C翻译成C#,如果有人可以指出我正确的方向。

谢谢!

2 个答案:

答案 0 :(得分: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)];
        }
    }
}

答案 1 :(得分:0)

首先,滑动UIView应该在其superView的边界内滑动。其次,当滑动UIView时,滚动视图的手势应该失败,直到滑动UIView位于其超视图的顶部或底部。这些可以通过实现UIGestureRecognizer协议的shouldBeRequiredToFailByGestureRecognizer方法来完成。

我在这里上传了sample project。里面的scrollview是一个tableview。