1

100% は見栄えが悪いため、iPad の幅の約 70% を占めるグループ化されたスタイルの UITableView を作成しようとしています。これは、両側に約 150px があることを意味します。

これは問題ありませんが、画面の幅全体をスクロールできるようにしたいと考えています。

次のような、コンテンツ ビューやインセットなどをいじくり回してみました。

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

tableView のスーパービューのメソッドをオーバーライドhitTest:withEvent:して、必要なポイントの 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 に答える