因此,客户的规范希望 UITableView 始终存在其中一个行,因此用户可以在 UITableView 的任何位置与这个关键按钮进行交互。一旦他滚动并看到带有按钮的实际行,浮动页脚必须消失并允许用户与“真实”单元格进行交互,而不是浮动版本。
我想出了以下代码:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if([self isPostularmeRowVisible])
{
[self hidePostularmeFooterView];
}
else
{
[self showPostularmeFooterView];
}
}
-(BOOL)isPostularmeRowVisible
{
NSArray *indexes = [self.tableView indexPathsForVisibleRows];
for (NSIndexPath *index in indexes)
{
if (index.row == 0 && index.section>=DetalleEmpleoPostularmeCell)
{
return YES;
}
}
return NO;
}
-(void) showPostularmeFooterView
{
NSAssert(_state==ESTADO_POSTULACION_NO_POSTULADO, @"NJDetalleEmpleoViewController: This shouldn't happen");
if(!self.footerView)
{
NJDetalleEmpleoPostularmeTableViewCell *footerView = [self.tableView dequeueReusableCellWithIdentifier:kDetalleEmpleoPostularmeCell];
[footerView configureCell:self.detaleAviso];
float h = self.view.frame.size.height-footerView.cellHeight;
footerView.frame = CGRectMake(0,h,self.view.frame.size.width,footerView.cellHeight);
footerView.delegate = self;
self.footerView = footerView;
[self.view addSubview:self.footerView];
[self.view bringSubviewToFront:self.footerView];
}
}
-(void) hidePostularmeFooterView
{
if(self.footerView)
{
[self.footerView removeFromSuperview];
}
self.footerView = nil;
}
但是这段代码有一个我似乎无法弄清楚的错误:一旦用户点击 UITextBox 并输入一些文本,它就会开始表现不稳定,即:屏幕上出现 2 个或更多单元格,而应该没有!基本上,当我调用“hidePostularmeFooterView”方法时,它似乎并没有消失(只有在我输入了一些文本之后,如果我不与之交互,它就可以正常工作)。
在我输入一些文本后,似乎有 2 个版本的页脚,这是证据: