覆盖不滚动 UITableView - iOS
Posted
技术标签:
【中文标题】覆盖不滚动 UITableView - iOS【英文标题】:Overlay not scrolling with UITableView - iOS 【发布时间】:2012-05-03 00:04:47 【问题描述】:我有一个 UITableView 类,它使用以下方法在进入下一个屏幕时调用加载覆盖。问题是这个加载屏幕不会随着列表滚动......所以如果你滚动一点并点击一些东西,加载屏幕不会显示(因为它在顶部)。如何让加载屏幕始终保持在 UITableView 的顶部?请注意,每个 UITableView 都包含在 UINavBar 中,而 UINavBar 又包含在 UITabBar 中。这是我的代码:
-(void)createLoadScreen
CGRect screenRect = [self.view bounds];
CGRect overlayFrame = CGRectMake(0.0, 0.0, screenRect.size.width, screenRect.size.height);
overlay = [[UIView alloc] initWithFrame:overlayFrame];
overlay.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.7];
CGRect frame = CGRectMake(screenRect.size.width / 2 - 25.0, screenRect.size.height / 2 - 70, 25.0, 25.0);
loading = [[UIActivityIndicatorView alloc] initWithFrame:frame];
[loading setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhiteLarge];
[loading sizeToFit];
loading.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin);
loading.hidesWhenStopped = YES;
[overlay addSubview:loading];
-(void)showActivityIndicator
[self.view addSubview:overlay];
[loading startAnimating];
-(void)removeActivityIndicator
[loading stopAnimating];
[overlay removeFromSuperview];
【问题讨论】:
【参考方案1】:你在使用 UITableViewController 吗?
您应该能够通过将覆盖视图添加到表格的超级视图而不是表格视图本身来解决您的问题。这样,您的叠加层实际上位于滚动表视图之上并与滚动表视图分开
-(void)showActivityIndicator
[[self.view superview] addSubview:overlay];
[loading startAnimating];
【讨论】:
实际上......现在正在发生一些时髦的事情。 uiactivityindicator 正在移动位置(高度方向)。不知道为什么会这样,但它似乎随机升高和降低,具体取决于我单击的表格单元格。有什么想法吗? 这是在我将它添加到 uitableview 的超级视图之后 还有其他解决方案吗?当我将它添加到超级视图时会发生一些时髦的事情 您的示例中的“self”指的是什么?它是一个 UITableViewController 吗?在 UINaviagationController 内部,然后在 UITabBarController 内部? 问题出在其他地方......虽然仍然很奇怪,它仅通过使用超级视图来实现。无论如何,我想通了,这个解决方案让我到了那里。谢谢!以上是关于覆盖不滚动 UITableView - iOS的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 上的 UIPanGestureRecognizer 覆盖 UITableView 的滚动视图手势识别器