4

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

这是我使用 tableView 的屏幕截图:-

在此处输入图像描述

这是我在 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 

我现在能做什么?

4

6 回答 6

5

表格视图的超级视图(在本例中为self.view)有一个框架,其末端高于表格视图的底部。

如果你设置,你可以看到这个:

self.view.clipsToBounds = YES;

要解决此问题,您需要

  • 使menuTable的框架更短(height减少menuTable.frame
  • 使self.view的框架更高(height增加self.view.frame
于 2013-05-30T14:04:00.730 回答
4

任何人都会导致问题

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

您还可以使用添加到 Xcode 的可视化调试工具以 3d 方式查看视图顺序,并检查哪个在另一个之上。

于 2013-05-30T13:22:49.157 回答
1

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

     [self.view bringSubviewToFront:table];

或者

更改表格框架(降低表格的一些高度)。

希望它可以帮助你。

于 2013-05-30T13:25:37.733 回答
1

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

于 2015-12-29T08:37:46.980 回答
0

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

于 2013-05-30T13:24:20.797 回答
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;    
    }

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

于 2014-01-10T05:41:05.873 回答