我有一个UIScrollView(带分页),我添加了三个UIViews。这些UIViews中的每一个都有一个UITableView。因此,用户应该能够水平滚动到他想要的页面,然后在相应的表格中垂直滚动。
但是,某些表格不会收到滚动手势。通常第一个表现良好,但其他表现不好。我无法选择单元格,也无法向上或向下滚动表格。
我使用了UIScrollView的默认设置,但viewDidLoad中定义的默认设置除外:
- (void)viewDidLoad
{
[super viewDidLoad];
//Load the view controllers
[self loadViewControllers];
//Configure the scroll view
self.scrollView.pagingEnabled = YES;
self.scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.scrollView.frame) * viewControllers.count, CGRectGetHeight(self.scrollView.frame));
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.scrollsToTop = NO;
self.scrollView.delegate = self;
//Configure the page control
self.pageControl.numberOfPages = viewControllers.count;
self.pageControl.currentPage = 0;
}
我无法弄清楚为什么我无法滚动某些表格......任何帮助都会非常感激。
提前致谢!
答案 0 :(得分:4)
尝试设置
self.scrollView.delaysContentTouches = YES;
self.scrollView.canCancelContentTouches = NO;
也许UIScrollView不会将触摸信息传递给子视图。
答案 1 :(得分:4)
我尝试使用基本的Interface Builder重现您的需求的简化版本,在我看来它使用基本编码并使用默认设置。你可以检查我的快速n脏Github回购,并请回答它是否适用于您的情况或缺少什么。
https://github.com/codedad/SO_ScrollView_with_Tables
默认情况下,Interface Builder创建UIScrollView和UITableViews,启用:
答案 2 :(得分:2)
我会检查的事情:
tableView:didSelectRowAtIndexPath:
中设置一个断点,看看是否正在调用该方法。我猜这些不是肯定的答案,但希望他们能帮助发现问题!
答案 3 :(得分:0)
这对我有用
我使用addSubview:
UIGestureRecognizerDelegate
是必需的。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isDescendantOfView:self.signUpJammerList]) {
return NO;
}
return YES;
}