我有一個包含一串子UIScrollViews的父級UIScrollView,每個scrollview都可以在每個方向上滾動。在每個孩子的頂部,有一個UIView,父母的子視圖。UIScrollView通過在框架內拖動來滾動
我想只在用戶從上面的UIView中的一個拖動時啓用父滾動。
任何想法這樣做?謝謝 !
我有一個包含一串子UIScrollViews的父級UIScrollView,每個scrollview都可以在每個方向上滾動。在每個孩子的頂部,有一個UIView,父母的子視圖。UIScrollView通過在框架內拖動來滾動
我想只在用戶從上面的UIView中的一個拖動時啓用父滾動。
任何想法這樣做?謝謝 !
您可以嘗試使用touchesBegan檢測用戶觸摸的位置,如果它位於其中一個UIViews中,則可以禁用所有子scrollView的滾動(或甚至交互)。所以在代碼中:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//check if touch is in one of the UIViews
//if so disable child UIScrollView interaction like so:
childScrollView.scrollEnabled = NO;
}
然後在觸摸結束的方法剛剛重新啓用子scrollViews滾動。
好的,我終於找到了一些東西!通過覆蓋父滾動視圖的回調-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
。
' - (UIView的*)則hitTest:(CGPoint)點withEvent:方法(*的UIEvent)事件 {
if (CGRectContainsPoint(myFrame, point))
{
self.scrollEnabled = YES;
}
else
{
self.scrollEnabled = NO;
}
return [super hitTest:point withEvent:event];
}`
這是解決方案,我正在尋找,但不幸的是,那種,touchesBegan:在我滾動時不會被調用。 – Aladin