在向UITextView添加文本时重叠UITextView

时间:2013-07-04 11:48:54

标签: iphone objective-c uitableview uitextview

我在UIViewController中创建了Storyboard,并将tableview添加为Subview。它的工作正常。在tableview中,我以编程方式添加了单元格,每个单元格包含UITextFieldsUITextViewUITextFields工作正常。但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;

enter image description here

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

enter image description here

那我该怎么办?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

cell.accessoryView = self.txtVwResponseNote;

在所有其他单元格中,将accessoryView设置为nil。

cell.accessoryView = nil;