• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - UITextField 不会自动调整宽度以适应内容,直到 resignFirstResponder 被调用?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:26:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我不确定为什么会这样,但基本上我有一个静态单元格,它由 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
}

这就是它在 Storyboard中的设置方式:

enter image description here

最初加载 ViewController 时,textField.text 的值为 No Cycle,非常适合。但是,当我滚动 UIPickerView 以选择第二行时,即 Semi-Monthly,文本会像这样被截断:

enter image description here

直到我点击 Done UIBarButtonItem 调用 textField.resignFirstResponder 才知道 textField 的宽度自动扩展以适应字符串 Semi-Monthly 的内容,如下所示: enter image description here

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



Best Answer-推荐答案


为您的文本字段设置“前导、尾随、顶部和固定高度约束”,您的问题将得到解决!如果你不能同时设置前导和尾随,那么你应该设置固定宽度。

关于ios - UITextField 不会自动调整宽度以适应内容,直到 resignFirstResponder 被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284605/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap