2

私の(かなり複雑な)状況は次のとおりです。

  • TestViewUIScrollViewを実装するサブクラスですが、-drawRect:内部のある時点で-drawRect:メソッドを呼び出します-drawAnotherPartWithRect:context:TestViewこのメソッドは、コンテキストの特定の部分を個別に描画するために、 のサブクラスによって実装されます。
  • その内部で現在同じことを行う2 つのサブクラスがTestView実装されています:と.-drawAnotherPartWithRect:context:Subclass1Subclass2
  • 現在のところ、初期化中の 2 つの違いはフレーム サイズだけです。

のインスタンスはSubclass1、テーブル ビューのセクション ヘッダーとして使用され、完全に機能しSubclass2ますが、セルのコンテンツ ビューのサブビューとして使用される場合、表示されますが、スクロールされません。その初期化は次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PortoAppSubjectViewTableViewCell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"PortoAppSubjectViewTableViewCell"] autorelease];

        Subclass2 *contentView = [[[Subclass2 alloc] initWithFrame:CGRectMake(0.f, 0.f, [tableView bounds].size.width, 32.f)] autorelease];
        [contentView setContentSize:CGSizeMake(tableView.bounds.size.width * 3, 32.f)];
        [contentView setTag:55];
        [[cell contentView] addSubview:contentView];
    }

    [(SubjectTableViewCellContentView *)[[cell contentView] viewWithTag:55] setContainer:[[[[$container subGradeContainers] objectAtIndex:[indexPath section]] subGradeContainers] objectAtIndex:[indexPath row]]];

    return cell;
}

興味深いことに、水平スクロール インジケーターが表示され、細かくスクロールしていることがわかりますが、(CoreText で描画された) テキストはそれに伴って左右に移動しません。これは、すぐに使用できるSubclass1. また、Subclass2セクション ヘッダー ビューのビュー クラスとして代わりに使用すると、問題なく動作します。

では、水平スクロール ビューとテーブル ビュー セルはどうしたのでしょうか。SOに関する他の関連する質問をチェックアウトしましたが、解決策を見つけることができませんでした。

4

1 に答える 1

0

UIScrollViewサブクラスに直接描画する代わりにUIView、のサブビューとして追加されたサブクラスに描画することで問題を解決しましたUIScrollView

まだフォローアップが必要なので、質問は未回答のままにしておきます。なぜヘッダー ビューで機能し、テーブル ビュー セルでは機能しなかったのですか?

于 2013-11-11T00:51:53.603 に答える