1

セルごとに 1 つのテーブルビューがUITextViewあります... この UITextViews 内にプレーン テキストがありますが、どういうわけかリンクの解析 (Interface Builder で有効化) が壊れているようです: リンクはリンクとして解析されず、プレーン テキストはクリック可能で、前のセル (スクリーンショットの最後のセルを確認してください。これは URL ではありませんが、Twitter のリンクを指しています)...

ここに画像の説明を入力

テーブルビューの人口のための私のコードは非常に簡単です...

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"ItemCell";
NSString *itemText;

CpCpListCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[CpCpListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}


if (theTableView == self.searchDisplayController.searchResultsTableView) {
    itemText = [self.filteredArray objectAtIndex:indexPath.row];
} else {
    itemText = [self.items objectAtIndex:indexPath.row];
}


[cell.cellContent setText:nil];
[cell.cellContent setText:itemText];

int len = cell.cellContent.text.length;
NSString *labelValue = [NSString stringWithFormat:@"%@: %d",NSLocalizedString(@"CHARCOUNT", nil),len];
[cell.charCount setText:labelValue];

UITapGestureRecognizer *rowClick = [[UITapGestureRecognizer alloc] initWithTarget:cell action:@selector(handleCellClick)];

//modify this number to recognizer number of tap
[rowClick setNumberOfTapsRequired:1];
[cell.cellContent addGestureRecognizer:rowClick];
[cell.cellContent setSelectable: YES];

cell.root = self;

return cell; 
}

これらのログが XCode に表示されます...

 Bad result <Result:HttpURL:{0, 394}>: its range {0, 394} is not completely included in the range {0, 134} of the string it is attached to, Vengono {
    DDResultAttributeName = "<Result:HttpURL:{0, 394}>";
    NSFont = "<UICTFont: 0x155eb2a0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
    NSLink = "http://google.it";
}200 euro{
    DDResultAttributeName = "<Result:Money:{8, 8}>";
    NSFont = "<UICTFont: 0x155eb2a0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
    NSLink = "http://google.it";
} l'uno + 30 di spedizione, 200 se vieni a prenderteli a milano. Sono biglietti prato dx blu x il 29. Ormai introvabili{
    DDResultAttributeName = "<Result:HttpURL:{0, 394}>";
    NSFont = "<UICTFont: 0x155eb2a0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
    NSLink = "http://google.it";
}
4

1 に答える 1

0

UITextViewすべてのセルに動的に追加する (およびストーリーボードから削除する) だけで解決された問題の根本的な原因は、dequeueReusableCellWithIdentifier:CellIdentifier再利用されるセルのすべてのサブビューを強制的にリセットする必要がある方法でした。

したがって、私のコードは次のようになります...

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"ItemCell";
    NSString *itemText;
    UITextView *theContent;

    CpCpListCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[CpCpListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }


    if (theTableView == self.searchDisplayController.searchResultsTableView) {
        itemText = [self.filteredArray objectAtIndex:indexPath.row];
    } else {
        itemText = [self.items objectAtIndex:indexPath.row];
    }


    theContent = [[UITextView alloc] initWithFrame:CGRectMake(10, 15, 300, 107)];    
    theContent.text = itemText;

    NSUInteger len = theContent.text.length;
    NSString *labelValue = [NSString stringWithFormat:@"%@: %lu",NSLocalizedString(@"CHARCOUNT", nil),(unsigned long)len];
    [cell.charCount setText:labelValue];

    // gestures
    UITapGestureRecognizer *rowClick = [[UITapGestureRecognizer alloc] initWithTarget:cell action:@selector(handleCellClick:)];
    [rowClick setNumberOfTapsRequired:1];

    // content properties...
    [theContent addGestureRecognizer:rowClick];
    [theContent setSelectable: YES];
    [theContent setEditable:NO];
    [theContent setDataDetectorTypes:UIDataDetectorTypeAll];

    cell.root = self;
    [cell addSubview:theContent];

    return cell;
}

これが同じ問題を抱えている人々に役立つことを願っています。

于 2013-10-26T14:18:31.047 に答える