У меня есть табличный вид с тремя ячейками таблицы. Во время настройки ячейки я добавляю UITextField для каждой из ячеек, а также устанавливаю значение placeholder во всех текстовых полях. Когда табличные загружает конечный результат выглядит следующим образом:UITextField текст наложения оверлея
Проблема у меня, что когда я прокручиваю любого из ячеек «с экрана», когда они появляются в тексте заполнителя получить темнее и темнее, как здесь:
Когда я затем попытаться изменить значение строки UITextField, введя имя, или программно изменив значение заполнителя на последней ячейке, старое значение этих свойств остается, и новое значение получает перекрывается в клетке, как это:
Вот методы, отвечающие за конфигурирование этих клеток:
- (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];
}
Как вы можете видеть, я пробовал разные вещи, как удаление всех subviews перед добавлением нового представления в ячейку или настройку - [UIView setClearsContextBeforeDrawing: YES] как для ячейки, так и для UITextView и даже для установки значения-заполнителя нуль без успеха.
Любые указатели были бы очень признательны!
Да, это проблема. Если вы видите перекрытие текста с заполнителем, это возможно, потому что есть> = 2 UITextFields в том же положении – onmyway133