在调用resignFirstResponder之前,UITextField不会自动调整宽度以适应内容?

时间:2017-04-07 18:11:19

标签: ios swift swift3 uitextfield

我不确定为什么会这样,但基本上我有一个静态单元格,它由一个UITextField组成。 inputViewUIPickerView,其inputAccessoryTypeUIToolBar

我是这样创建的:

var repeat_ARRAY: [String] = []

override func viewDidLoad()
{
    super.viewDidLoad()

    repeat_ARRAY.append("No Cycle")
    repeat_ARRAY.append("Semi-Monthly")

    toolBar.barStyle = UIBarStyle.default
    toolBar.isTranslucent = true
    toolBar.sizeToFit()

    let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(ViewController.dismissPicker(_:) ) )

    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

    toolBar.setItems([spaceButton, doneButton], animated: false)
    toolBar.isUserInteractionEnabled = true

    createCell()
}

func numberOfComponents(in pickerView: UIPickerView) -> Int
{
    return 1
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
    return repeat_ARRAY[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
    textField.text = repeat_ARRAY[row]
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
    return repeat_ARRAY.count
}

func dismissPicker(_ sender: UIBarButtonItem)
{
    textField.resignFirstResponder()
}

func createCell()
{
    textField.text = "No Cycle"
    textField.delegate = self

    let pickerView: UIPickerView = UIPickerView()

    pickerView.delegate = self
    pickerView.dataSource = self

    textField.inputView = pickerView

    textField.inputAccessoryView = toolBar
}

这就是它在故事板中的设置方式:

enter image description here

最初加载ViewController时,textField.text No Cycle ,这很合适。但是,当我滚动UIPickerView以选择第二行,即半月时,文字将被截断:

enter image description here

直到我点击完成 UIBarButtonItem致电textField.resignFirstRespondertextField的宽度会自动扩展以适应内容字符串半月如下: enter image description here

我不太明白为什么会这样?

1 个答案:

答案 0 :(得分:0)

设置前导,尾随,顶部和固定高度限制'到您的文本域,您的问题将得到解决!如果您无法设置前导和尾随两者,则应设置固定宽度。