UITextField占位符文本覆盖问题

加博尔

我有一个带有三个表格视图单元格的表格视图。在单元格配置期间,我向每个单元格添加一个UITextField,并且还在所有文本字段上设置了占位符值。加载表视图时,最终结果如下所示:

加载后的表格视图

我遇到的问题是,当我滚动出现任何“离屏”的单元格时,当它们再次出现时,占位符文本变得越来越暗,如下所示:

较暗的占位符文本

然后,当我尝试通过在其中键入名称或以编程方式更改最后一个单元格上的占位符值来更改UITextField字符串值时,这些属性的旧值会保留,而新值将覆盖在该单元格中,如下所示:

在此处输入图片说明

Here are the methods responsible for configuring those cells:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...
    [self configureCell:cell forIndexPath:indexPath];

    return cell;
}

- (void)configureCell:(UITableViewCell *)cell forIndexPath:(NSIndexPath *)indexPath
{
    for (UIView *subview in cell.contentView.subviews) {
        [subview removeFromSuperview];
    }

    cell.backgroundColor = [UIColor whiteColor];
    cell.autoresizesSubviews = YES;
    cell.clearsContextBeforeDrawing = YES;
    CGRect textFieldFrame = cell.bounds;
    textFieldFrame.origin.x += 10;
    textFieldFrame.size.width -= 10;

    UITextField *textField = [[UITextField alloc] initWithFrame:textFieldFrame];
    textField.adjustsFontSizeToFitWidth = YES;
    textField.textColor = [UIColor lightGrayColor];
    textField.enabled = YES;
    textField.userInteractionEnabled = NO;
    textField.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    textField.clearsContextBeforeDrawing = YES;
    textField.clearsOnBeginEditing = YES;

    if (indexPath.section == ATTAddNewTimerSectionName) {
        textField.placeholder = @"Name";
        textField.userInteractionEnabled = YES;
        textField.delegate = self;
        textField.returnKeyType = UIReturnKeyDone;
        textField.clearButtonMode = UITextFieldViewModeWhileEditing;
    } else if (indexPath.section == ATTAddNewTimerSectionDate) {
        textField.placeholder = @"Date/Time";
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    } else if (indexPath.section == ATTAddNewTimerSectionCalendar) {
        if (self.userCalendarEvent == nil) {
            textField.placeholder = @"See list of calendar events";
        } else {
            textField.placeholder = nil;
            textField.placeholder = self.userCalendarEvent.title;
        }
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    [cell addSubview:textField];
}

As you can see, I have tried various things, like removing all the subviews before adding a new view to the cell or setting -[UIView setClearsContextBeforeDrawing:YES] on both the cell and the UITextView and even setting the placeholder value to nil without success.

Any pointers would be much appreciated!

rmaddy

You are making a classic error that so many people make. Cells get reused as a table is scrolled.

As written, your code keeps creating and adding a new text field every time the cell is used. So you are seeing the result of having multiple text fields in a cell.

You want to only add one text field to a cell. Update your code so it only adds the text field if it isn't there already.

似乎您在代码中存在逻辑问题。您可以将文本字段直接添加到单元格中,但是尝试将其从单元格中删除contentView

更改此:

[cell addSubview:textField];

至:

[cell.contentView addSubview:textField];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

UITextField占位符问题

来自分类Dev

UITextField占位符文本的多种字体大小

来自分类Dev

UITextField,在iOS中的文本后设置占位符

来自分类Dev

使用Userattributes更改UITextField的占位符文本颜色吗?

来自分类Dev

为什么UITextField占位符文本的大小减小?

来自分类Dev

UITextField占位符文本的多种字体大小

来自分类Dev

如何在 ios UITextfield 中显示完整的占位符文本?

来自分类Dev

UITextField:在光标和占位符文本之间添加边距

来自分类Dev

将占位符添加到UITextField,如何以编程方式快速设置占位符文本?

来自分类Dev

文本字段占位符字体会产生问题

来自分类Dev

选择angularjs占位符文本问题中选择的多个

来自分类Dev

占位符文本填充

来自分类Dev

Textarea占位符文本

来自分类Dev

占位符文本填充

来自分类Dev

输入占位符覆盖日期

来自分类Dev

防止UILabel文本颜色更改迅速覆盖占位符文本颜色更改

来自分类Dev

如何创建带有左侧占位符和右侧已编辑文本的UITextField?

来自分类Dev

需要在iOS中将自定义UITextField中的占位符文本垂直居中

来自分类Dev

从使用CALayer样式化的UITextField中的占位符文本中删除阴影

来自分类Dev

是否将VoiceOver设置为忽略UITextField中的占位符文本?

来自分类Dev

UITextField占位符文本在iOS13暗模式下不可读

来自分类Dev

从使用CALayer样式化的UITextField中的占位符文本中删除阴影

来自分类Dev

在IOS中输入时将占位符文本保留在UITextField中

来自分类Dev

如何在UItextfield和占位符文本中设置右边距?

来自分类Dev

如何在Objective-C中编写UITextField的“默认占位符文本”?

来自分类Dev

快速设置UITextfield占位符的字体

来自分类Dev

以编程方式设置UITextField占位符颜色

来自分类Dev

在UITextField中添加永久占位符

来自分类Dev

UITextField占位符对齐滚动麻烦

Related 相关文章

  1. 1

    UITextField占位符问题

  2. 2

    UITextField占位符文本的多种字体大小

  3. 3

    UITextField,在iOS中的文本后设置占位符

  4. 4

    使用Userattributes更改UITextField的占位符文本颜色吗?

  5. 5

    为什么UITextField占位符文本的大小减小?

  6. 6

    UITextField占位符文本的多种字体大小

  7. 7

    如何在 ios UITextfield 中显示完整的占位符文本?

  8. 8

    UITextField:在光标和占位符文本之间添加边距

  9. 9

    将占位符添加到UITextField,如何以编程方式快速设置占位符文本?

  10. 10

    文本字段占位符字体会产生问题

  11. 11

    选择angularjs占位符文本问题中选择的多个

  12. 12

    占位符文本填充

  13. 13

    Textarea占位符文本

  14. 14

    占位符文本填充

  15. 15

    输入占位符覆盖日期

  16. 16

    防止UILabel文本颜色更改迅速覆盖占位符文本颜色更改

  17. 17

    如何创建带有左侧占位符和右侧已编辑文本的UITextField?

  18. 18

    需要在iOS中将自定义UITextField中的占位符文本垂直居中

  19. 19

    从使用CALayer样式化的UITextField中的占位符文本中删除阴影

  20. 20

    是否将VoiceOver设置为忽略UITextField中的占位符文本?

  21. 21

    UITextField占位符文本在iOS13暗模式下不可读

  22. 22

    从使用CALayer样式化的UITextField中的占位符文本中删除阴影

  23. 23

    在IOS中输入时将占位符文本保留在UITextField中

  24. 24

    如何在UItextfield和占位符文本中设置右边距?

  25. 25

    如何在Objective-C中编写UITextField的“默认占位符文本”?

  26. 26

    快速设置UITextfield占位符的字体

  27. 27

    以编程方式设置UITextField占位符颜色

  28. 28

    在UITextField中添加永久占位符

  29. 29

    UITextField占位符对齐滚动麻烦

热门标签

归档