1

我正在尝试拥有一个分组样式的 UITableView,它占据了 iPad 宽度的 70% 左右,因为 100% 看起来并不好。这意味着两边大约有 150 像素。

这很好,但我想让屏幕的整个宽度都可以滚动。

我已经尝试过对内容视图和插图等进行各种处理,例如:

self.theTable.contentInset = UIEdgeInsetsMake(0, 150, 0, 150);
self.theTable.contentSize = CGSizeMake(self.theTable.contentSize.width + 300,  self.theTable.contentSize.height);
self.theTable.contentOffset = CGPointMake(-150, 0);

但我不能让它像我想要的那样工作。

我需要能够点击任一侧的背景(150px 左右)并能够通过拖动来滚动表格视图。

从本质上讲,我猜这相当于将滚动视图的大小任一侧增加 150 像素,或者将表格视图的任一侧插入 150 像素。

有任何想法吗?

4

1 回答 1

1

您可以覆盖hitTest:withEvent:tableView 的 superview 的方法并返回 tableView 以获得所需的点。

hitTest:withEvent:或者,您可以在 tableView中覆盖并检查那里的条件。

容器超级视图 hitTest 方法的示例。所有事件都将转发到 tableView。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if (![self pointInside:point withEvent:event]) {
        return nil;
    }
    UITableView *tableView = nil;
    for (UIView *v in self.subviews) {
        if ([v isKindOfClass:[UITableView class]]) {
            tableView = v;
            break;
        }
    }

    if (!tableView) {
        return self;
    }

    if (CGRectContainsPoint(tableView.frame, point)) {
        return [tableView hitTest:[self convertPoint:point toView:tableView] withEvent:event];
    } else {
        return tableView;
    }
}
于 2012-05-29T18:33:19.160 回答