我不确定为什么会这样,但基本上我有一个静态单元格,它由一个UITextField
组成。 inputView
为UIPickerView
,其inputAccessoryType
为UIToolBar
。
我是这样创建的:
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
}
这就是它在故事板中的设置方式:
最初加载ViewController时,textField.text
值 No Cycle ,这很合适。但是,当我滚动UIPickerView
以选择第二行,即半月时,文字将被截断:
直到我点击完成 UIBarButtonItem
致电textField.resignFirstResponder
,textField
的宽度会自动扩展以适应内容字符串半月如下:
我不太明白为什么会这样?
答案 0 :(得分:0)
设置前导,尾随,顶部和固定高度限制'到您的文本域,您的问题将得到解决!如果您无法设置前导和尾随两者,则应设置固定宽度。