1

UITableView のセルとして UIWebView があります。これが推奨されないことはわかっていますが、WebView はスクロールしないため、推奨事項は重要ではありません。Web ビューを使用して、セルのスタイルとテーマを設定します。

私が抱えている問題は、iOS 6 で userInteractionEnabled を NO に設定すると、UIWebView がタッチ イベントをレスポンダー チェーンに渡さないことです。テーブル ビューは didSelectRowAtIndexPath を呼び出しません。これは iOS 5 で正常に動作することに注意してください。

私の質問は、Apple は UIWebView が userInteractionEnabled を処理する方法を変更しましたか?

どんなコメントでも役に立ちます。

ここで電話をかけます。正しいセル インスタンスで呼び出されています (テーブルには WebView セルが 1 つしかありません)。

webView.userInteractionEnabled = NO;
4

2 に答える 2

2

iOS 6で問題なく動作

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, cell.contentView.frame.size.width, cell.contentView.frame.size.height)];
    NSString *html = @"<div></div>";
    [wv loadHTMLString:html baseURL:nil];
    wv.userInteractionEnabled = NO;
    [[cell contentView] addSubview:wv];

    return cell;
}
于 2013-02-28T16:14:11.533 に答える
0

私の問題は、userInteractionEnabled とは何の関係もありませんでした。

shouldHighlightRowAtIndexPath: メソッドもオーバーライドしたためです。

- (BOOL) tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0) {
        return NO;
    }
    return YES;
}

iOS 6 では、これにより、その indexPath のセルへのタッチ イベントが無効になっているようです。知っておくとよい。

于 2013-02-28T18:42:22.073 に答える