附加文本后的 UITextField 布局超级视图

Posted

技术标签:

【中文标题】附加文本后的 UITextField 布局超级视图【英文标题】:UITextField layout superview after appending text 【发布时间】:2016-08-16 08:35:16 【问题描述】:

我有 UITableView,每行有 2 个 UITextField 元素水平放置。

我希望右 UITextField 在我追加文本时自动放大,但布局仅在我结束编辑文本时发生。

我尝试将此代码添加到 UITableViewCell 但它不起作用

override func awakeFromNib() 
    super.awakeFromNib()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(BillPositionCell.textDidChange), name: UITextFieldTextDidChangeNotification, object: self.sumTextField)


func textDidChange() 
    self.sumTextField.setNeedsLayout()
    self.sumTextField.layoutIfNeeded()
    self.contentView.setNeedsLayout()
    self.contentView.layoutIfNeeded()

【问题讨论】:

为什么不给文本字段尽可能大的宽度?使用清晰的颜色背景,您看不到矩形块,而只看到文本。 因为我右边还有另一个文本字段,我不想浪费空间 【参考方案1】:

试试:(宽度为sumTextField宽度NSLayoutConstraint)

func textDidChange() 
    let newSize = sumTextField.sizeThatFits(CGSizeMake(CGFloat.max, CGFloat.max))
    width.constant = newSize.width
    layoutIfNeeded()

【讨论】:

【参考方案2】:

看到这个答案:textDidChange vs controlTextDidChange

简而言之,使用 controlTextDidChange: 代替。

【讨论】:

1.它是 ios,而不是 OS X 2。我的 textDidChange 函数被调用,我在其中放置了断点

以上是关于附加文本后的 UITextField 布局超级视图的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局调整超级视图和所有超级视图的兄弟姐妹的大小

使用自动布局根据超级视图背景图像放置视图

使用自动布局扩展方形视图以填充矩形超级视图

iOS - 以编程方式在具有自动布局的 UITextField 内定位 UIImageView

以编程方式附加字符后在 UITextField 中显示文本的结尾[重复]

设置 UITextField 约束以在换行符中继续