iOS TextField视图滑出布局

时间:2018-01-24 12:36:33

标签: ios swift xcode textfield

我在我的应用中使用TextField。我用它来包装内容。 问题是当用户键入长文本时,TextField边缘滑出布局并使某些视图不可见。 有没有办法在它到达布局边缘时禁用它?as you can't see the text glides out of the textfield and the clear button does too

2 个答案:

答案 0 :(得分:2)

最好的办法是将UITextField更改为UITextView。这是一个我喜欢使用这个自动调整技术的函数,你可以在Apples iMessage中看到:

func containerViewHeight() {
    let size = textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: CGFloat.greatestFiniteMagnitude))
    containerView.heightAnchor.constraint(equalToConstant: size.height + 24)
    self.textView.setContentOffset(.zero, animated: false)
}

您最初需要在viewDidLoad

内调用此功能
override func viewDidLoad() {
    self.containerViewHeight()
}

除此之外,您还需要通过在文件顶部对其进行子类化来符合UITextViewDelegate方法,如下所示:

class YourViewController: UIViewController, UITextViewDelegate

添加 AND 后,您在self.textView.delegate = self内使用了viewDidLoad

override func viewDidLoad() {
    self.textView.delegate = self
}

然后你就可以对textView使用textViewDidChange方法了,所以你要在课堂上添加的最后一件事是:

func textViewDidChange(_ textView: UITextView) {
    self.containerViewHeight()
}

答案 1 :(得分:1)

您的textField可能没有固定的宽度。 只需在故事板中为textField添加宽度约束,这样无论文本是否太长,它都将始终具有相同的宽度。

编辑:如果您想要最大宽度,可以为textField添加2个宽度约束。一个用于最小宽度,一个用于最大宽度。这样,textField的宽度将在100到200之间变化,具体取决于它包含的文本。

最小宽度约束:

enter image description here

最大宽度限制:

enter image description here