我有一个 UITableViewCell,它有两个 UITextFields(无边框)。以下约束用于设置水平布局。
@"|-10-[leftTextField(>=80)]-(>=10)-[rightTextField(>=40)]-10-|"
没有什么花哨的,并且按预期工作。
如您所见,上面的 textField 具有正确的大小。下面的 textField 以空文本开头,由于是空文本,它的宽度为 80 磅。当我在编辑 textField 中输入文本时,文本会向左滚动,但不会改变其宽度。
我不喜欢这样,当用户键入该 textField 时,应该调整 textField 的宽度。
在我看来,这应该是开箱即用的。通过实现一个事件IBAction
,UIControlEventEditingChanged
我可以确认输入实际上改变intrinsicContentSize
了 UITextField 的。
但是,在 textField 不再是第一响应者之前,宽度不会改变。如果我将光标放到另一个 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));
}
有人知道我错过了什么吗?我可以尝试什么来完成这项工作?