У меня есть UITableViewCell, который имеет два UITextFields (без границ). Для настройки горизонтальной компоновки используются следующие ограничения.
@"|-10-[leftTextField(>=80)]-(>=10)-[rightTextField(>=40)]-10-|"
Ничего необычного и работает так, как ожидалось.
Как вы можете видеть, верхний textField имеет правильный размер. Нижний текстовый экран начинался с пустого текста, а из-за пустого текста он составлял 80 точек. Когда я ввожу текст в текстовый текст редактирования, текст прокручивается влево, он не меняет его ширины.
Мне это не нравится, ширина textField должна настраиваться, когда пользователь вводит этот текст.
По-моему, это должно работать из коробки. Внедряя IBAction
для события UIControlEventEditingChanged
, я могу подтвердить, что типизация фактически изменяет intrinsicContentSize
UITextField.
Но хорошо, ширина не меняется до тех пор, пока textField больше не станет первым ответчиком. Если я поместил курсор в другой текстовый фильтр, будет задана ширина отредактированного textField. Это немного поздно для того, что я хочу.
Эти прокомментированные строки - это то, что я пробовал без успеха:
- (IBAction)textFieldDidChange:(UITextField *)textField {
[UIView animateWithDuration:0.1 animations:^{
// [self.contentView removeConstraints:horizontalConstraints];
// [self.contentView addConstraints:horizontalConstraints];
// [self.contentView layoutIfNeeded];
// [self.contentView setNeedsLayout];
// [self.contentView setNeedsUpdateConstraints];
}];
NSLog(@"%@", NSStringFromCGSize(textField.intrinsicContentSize));
}
Кто-нибудь знает, что мне не хватает? Что я могу попытаться сделать этой работой?