【问题标题】:UITableViewCell resizing won't affect touch areaUITableViewCell 调整大小不会影响触摸区域
【发布时间】:2013-05-18 07:40:05
【问题描述】:

我有 UITableView,其中单元格取自使用 Interface Builder (xib) 文件创建的 UITableViewCell。

问题是单元格的触摸区域不受影响,无论单元格的框架如何。有没有办法来解决这个问题 ?

  • xib 视图大小为 768x60(因为还需要支持纵向)
  • 调整内容大小没有问题,但触摸区域保持不变。我来自 IB 的原始单元格大小是 768x60,而新大小是 1024x60(横向)。
  • 如果触摸 X 点在 768-1024 之间,则单元格不会被选中)
  • IB 的结构设置如下(查看图片),我也尝试了一些不同的设置。

我该如何解决这个问题?这是 UITableViewCell 类中 layoutSubviews 方法的日志。

代码

- (void)layoutSubviews
{
    NSLog(@"pre frame > %@ ",NSStringFromCGRect(self.contentView.frame));
    [super layoutSubviews];
    NSLog(@"post frame > %@ ",NSStringFromCGRect(self.contentView.frame));
}

输出

pre frame > {{0, 0}, {748, 62}} // before calling [super layoutSubviews]
post frame > {{0, 0}, {1004, 62}} // after calling [super layoutSubviews]

* * 更新 * *

由于截止日期,我无法弄清楚修补此代码,因此我从头开始创建了 xib 文件(对于包含 UITableView 而不是 UITableViewCell 的大容器视图),问题似乎已经消失。感谢所有试图提供帮助的人。

【问题讨论】:

  • UITableView 可以换帧吗?
  • 检查 XIB 中 UITableViewCell 启用的用户交互
  • 您的表格单元的一个超级视图的框架肯定比表格单元的框架短(在横向模式下)。这就是为什么触摸区域不起作用的原因。您需要通过以您喜欢的方式放置背景颜色或日志来正确检查所有超级视图的框架。
  • NANNAV - 是的,它可以改变框架 Navnath - 是的,我什至在代码中启用它只是为了确保@Divyu - 你建议我怎么做?我将遍历 cellForRowAtIndexPath 中的视图?谢谢

标签: ios objective-c xcode uitableview autoresize


【解决方案1】:

确保所有超级视图(从 tableview 到 app 委托中的 self.window.rootViewController)也将帧大小更改为横向。

【讨论】:

  • 谢谢,问题似乎在这里。我发现 2 层(在 UITableview 和窗口之间)的框架为 {0 0 ; 768 1024} 这让我很惊讶。它基本上是发布后的第一个屏幕,对此非常困惑,因为它以前从未发生在我身上:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 1970-01-01
相关资源
最近更新 更多