UIView,SegmentedController& UIContainerView在ScrollView或类似的东西?
在我的故事板中,我有一个VC包含顶部的UIView,中间的分段控制器2个ContainerViewController在底部嵌入了segue的新VC.
在新的VC中,我有一个TableView&一个CollectionView(例如,Instagram的个人资料).
我的问题是,我需要SegmentedController和UIView滚动与ContainerView(TableView / CollectionView),目前只有ContainerView部分滚动,上面的部分是固定的.
现在我猜想我可能需要将所有内容都放在UIScrollView中,所以我试过了正确地放置所有的约束但是当它在Swift文件中进行配置时,我现在只是真的如何设置滚动的高度,但是很显然,我需要的高度可以有所不同而不是一个固定的高度!
如果有任何人可以帮助我,这将是太棒了,或者也许指向我已经在这里问过的一个类似的问题?我已经看了,但没有找到什么不幸!
这是一个下面的图片,基本上解释了我以后,如果上面我不是很清楚..
这里是一个你可以看到的例子:https://github.com/Jackksun/ScrollIssue
解决方法
所以据我所知,你想让你的滚动视图接触到它的界限之外.您可以通过覆盖hitTest:实际接收触摸的视图上的withEvent:方法来实现此目的.
这是我在项目中做的一个例子.我将UIView子类化并将其接收的所有触摸重定向到特定视图.在您的情况下,您将重定向所有触摸到滚动视图.
.h file: @import UIKit.UIView; /*! @class TouchableView @abstract Touchable view. */ @interface TouchableView : UIView /*! @property viewToReceiveTouches @abstract View that receives touches instead of a given view. */ @property (nonatomic,weak) IBOutlet UIView *viewToReceiveTouches; @end .m file: @import UIKit.UIButton; @import UIKit.UITableView; @import UIKit.UITextField; #import "TouchableView.h" @implementation TouchableView - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { if ( [self shouldViewReceiveTouch:self inPoint:point] ) { return [super hitTest:point withEvent:event]; } else if ( CGRectContainsPoint(self.bounds,point) && self.isUserInteractionEnabled ) { return self.viewToReceiveTouches; } return nil; } - (BOOL)shouldViewReceiveTouch:(UIView *)view inPoint:(CGPoint)point { if ( !CGRectContainsPoint(view.bounds,point) || !view.isUserInteractionEnabled ) { return NO; } if ( [view isKindOfClass:[UIButton class]] || [view isKindOfClass:[UITextField class]] || [view isKindOfClass:[UITableViewCell class]] || [view isKindOfClass:[UITableView class]] ) { return YES; } for ( UIView *subview in view.subviews ) { if ( [self shouldViewReceiveTouch:subview inPoint:[view convertPoint:point toView:subview]] ) { return YES; } } return NO; } @end