UITableView最后一行确实选择不正常工作?

时间:2013-05-30 13:20:22

标签: iphone uitableview didselectrowatindexpath

我面临一个非常奇怪的问题。我正在使用tableView用于菜单目的。它工作正常。 但问题是在该表的最后一行中,只有上半区域的火灾确实选择了事件。当我点击最后一行的中间时,确实选择不起作用。点击单元格的上半部分,选择工作正常。任何人都可以详细说明吗?

这是我使用tableView的截图: -

enter image description here

这是我在backTableView的didSelect上设置表格y位置的代码。

        UITableView *menuTable=(UITableView*)[self.view viewWithTag:5];
    CGRect rect=[menuTable frame];
    rect.origin.y-=rect.size.height;

    [UIView animateWithDuration:0.3 animations:^{
        [menuTable setFrame:rect];
    } completion:^(BOOL finished) {

        [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES];
        isMenuOpen=YES;
        [bgView setFrame:self.view.frame];
        [self.view insertSubview:bgView belowSubview:menuTable];
        for (UIView *view in self.view.subviews) {
            if (view!=menuTable && view.tag!=44) {
                [view setUserInteractionEnabled:NO];
            }
        }
        NSLog(@"animation completed");
    }];

Setted rowHeight to 40
bringSubViewtoFront
TableHeight to 80 

我现在能做什么?

6 个答案:

答案 0 :(得分:5)

表格视图的超级视图(在本例中为self.view)的框架结尾高于表格视图的底部。

如果设置:

,您可以看到这一点

self.view.clipsToBounds = YES;

要解决此问题,您需要

  • 缩短menuTable的框架(减少height的{​​{1}})
  • menuTable.frame的框架更高(self.view增加height

答案 1 :(得分:4)

任何人都会导致问题

  • 上面的一些视图与tableview重叠
  • 表格单元的高度未正确设置
  • 代表未正确设置
  • 确保正确设置了tableview框架及其超视图框[如果superview的高度较低,则会出现此问题]
  • 如果有页脚或标题以及多个部分,请检查委托方法以过滤表格视图应显示页眉/页脚并检查高度。

您还可以使用添加到Xcode的visual debugging tools以3d方式查看视图顺序,并检查哪一个在另一个上。

答案 2 :(得分:1)

我遇到了同样的问题,只能通过将tableview的页脚高度设置为1来解决。 可能在将来帮助某人。

答案 3 :(得分:0)

这很可能是设置框架的问题。请检查您是否正确设置了框架。它应该适合superview。

答案 4 :(得分:0)

这是因为您的表格视图上方有一些控件。 因此,使用 bringSubviewToFront:方法将其置于顶部

     [self.view bringSubviewToFront:table];

更改表格框架(减少桌子的某些高度)。

希望它对你有所帮助。

答案 5 :(得分:0)

我通过添加页脚视图和设置页脚高度来解决它。

 (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
    {    
    UIView *footer=[[UIView alloc]initWithFrame:CGRectZero];
    return footer;    
    }

 (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
        return 1;    
    }

即使问题没有解决,也要在最后添加一个额外的单元格,并禁用用户与该单元格的交互。