1

我创建UIViewControllerStoryboard添加tableviewSubview. 它工作正常。我以tableview编程方式添加了单元格,每个单元格都包含UITextFieldsor UITextViewUITextFields工作正常。但是UITextViews有一些麻烦。EX:当我添加文本时,UITextView波纹管UITextViews重叠。这是为什么 ?我试图整理一整天。但我还是做不到。:(

    case cellResponseNote:
        cell = [tableView.tableView dequeueReusableCellWithIdentifier:CellIdentifierResponseNote];

        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierResponseNote];
             cell.frame = CGRectMake(0, 0, cell.frame.size.width, cellNotesHeight);
            //cell.frame = CGRectMake(0, 0, cell.frame.size.width, cellNotesHeight);
            if (!self.txtVwResponseNote) {
              // self.txtVwResponseNote = [[UITextView alloc] initWithFrame:cell.frame];
                self.txtVwResponseNote = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cellNotesHeight)];
                [self.txtVwResponseNote setScrollEnabled:NO];
                [self.txtVwResponseNote setAutoresizingMask:UIViewAutoresizingNone];
                [self.txtVwResponseNote setDelegate:self];

                [self.txtVwResponseNote setFont:[UIFont systemFontOfSize:14]];
                [self.txtVwResponseNote setInputAccessoryView:self.keyboardToolbar];
                [self setupMailData:indexPath.row];
            }
        }
        self.txtVwResponseNote.editable = !(self.isMailForReview);
       // [cell.contentView addSubview:self.txtVwResponseNote];
        [cell addSubview:self.txtVwResponseNote];
        contentSubview = self.txtVwResponseNote;

在此处输入图像描述

在此图像底部,您可以看到三个单元格。(波纹管页脚)当我为顶部文本视图添加文本值时。然后重叠下一个文本视图。波纹管图像你只能看到两个文本视图。底部文本视图未显示。

在此处输入图像描述

所以我该怎么做 ?

4

2 回答 2

0

它会重复,因为您将其作为子视图添加到单元格中,然后重用该单元格。将其添加为单元格的附件视图,并将其设置为 nil 以用于不需要它的单元格。

cell.accessoryView = self.txtVwResponseNote;

在所有其他单元格中,将附件视图设置为 nil。

cell.accessoryView = nil;
于 2013-07-04T13:17:17.953 回答
0

首先作为答案尝试通过以下方法设置单元格的高度。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
   case cellResponseNote:
        return cellNotesHeight;
   default:
        return defaultHeight;
}

另外我建议您不要共享 textview 属性。而是尝试像这样修改您的代码,看看您的代码是否有效。

case cellResponseNote:
    cell = [tableView.tableView dequeueReusableCellWithIdentifier:CellIdentifierResponseNote];
    UITextView *txtVwResponseNote = nil;
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierResponseNote];
         cell.frame = CGRectMake(0, 0, cell.frame.size.width, cellNotesHeight);
        //cell.frame = CGRectMake(0, 0, cell.frame.size.width, cellNotesHeight);
        //if (!self.txtVwResponseNote) {
          // self.txtVwResponseNote = [[UITextView alloc] initWithFrame:cell.frame];
            txtVwResponseNote = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cellNotesHeight)];
            [txtVwResponseNote setScrollEnabled:NO];
            [txtVwResponseNote setAutoresizingMask:UIViewAutoresizingNone];
            [txtVwResponseNote setDelegate:self];

            [txtVwResponseNote setFont:[UIFont systemFontOfSize:14]];
            [txtVwResponseNote setInputAccessoryView:self.keyboardToolbar];
            [txtVwResponseNote setTag:100];
        //}
    } else {
        txtVwResponseNote = (UITextView *)[cell viewWithTag:100]
    }

    [self setupMailData:indexPath.row];
    txtVwResponseNote.editable = !(self.isMailForReview);
   // [cell.contentView addSubview:txtVwResponseNote];
    [cell addSubview:self.txtVwResponseNote];
    contentSubview = self.txtVwResponseNote;
于 2013-07-04T12:36:36.043 回答