UITextField有时不显示清除Button

时间:2014-06-03 01:59:18

标签: ios objective-c uitableview uitextfield

我在项目中添加了一个简单的UITableView,每个单元格都包含一个带有clearButtonMode = UITextFieldViewModeAlways 的UITextField。 但是出现了奇怪的问题。当我重新加载数据时,某些文本字段不显示清除按钮

所以我抓住了部件并构建了一个样本,但从未发现过这个问题。 我只是想知道某些属性对textField有影响。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"userIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                      reuseIdentifier:cellIdentifier];
    }
    for (UIView *sv in cell.contentView.subviews) {
        [sv removeFromSuperview];
    }

    UITextField *tf = [[UITextField alloc] initWithFrame:cell.bounds];
    tf.text = [self.tb_data[indexPath.row];
    tf.rightViewMode   = UITextFieldViewModeAlways;
    tf.clearButtonMode = UITextFieldViewModeAlways;
    tf.tag = indexPath.row+100;
    tf.delegate = self;

    [[cell contentView] addSubview:tf];

    return cell;
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if (textField.tag >= 100) {
        return NO;
    }
    return YES;
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    if (textField.tag >= 100) {

        [self.tb_data removeObjectAtIndex:textField.tag-100];
        [self.tb beginUpdates];
        [self.tb deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:textField.tag-100 inSection:0]] withRowAnimation:UITableViewRowAnimationLeft];
        [UIView animateWithDuration:0.3
                         animations:^{
                             CGRect frame = self.tb.frame;
                             frame.size.height = 40*self.tb_data.count;
                             self.tb.frame = frame;
                     }];
        [self.tb endUpdates];
        [self.tb reloadData];

    }
    return YES;

}

0 个答案:

没有答案