【问题标题】:How to resize UITextField as user types in Swift如何在 Swift 中根据用户类型调整 UITextField 的大小
【发布时间】:2015-03-30 17:32:10
【问题描述】:

我正在尝试在 IOS8 上使用 Swift 编写消息应用程序。本质上,我试图模仿 IOS 中的短信应用程序在您到达文本字段的边缘时所做的事情——文本字段的高度增加,并创建了一个新行。现在,当我键入时,单词只是滚动到一边。如何防止侧滚动,而是调整文本字段的大小?

【问题讨论】:

  • 使用 textview 代替 textfield。
  • 我想我使用文本字段的原因是我可以有占位符文本和圆角边框...

标签: ios iphone swift resize uitextfield


【解决方案1】:

我肯定会使用UITextView 结合它的textViewDidChange: 委托方法。您可以通过根据您指定的约束测量其内容大小来跟踪内部文本何时更改并相应地更新您的 textView 宽度(或高度)。

您还可以重新实现drawRect: 以添加圆角边框或自定义其layer 的属性(如cornerRadius)。

Placeholder 也可以通过跟踪文本更改来实现(无论是通过委托方法还是通知)。

我同意这不是最佳选择,但至少您仍然可以选择模仿 UITextField 的行为。

【讨论】:

  • 感谢您的回答!有什么方法可以告诉我在textview中输入了多少行文本?
  • 您无法直接知道行数,但您可以询问 textView 它的内容大小是多少(使用contentSize 属性)。它会在您输入时自动更新。唯一的要求是您强制其宽度为您指定的布局约束或通过设置其框架(仅当没有自动布局时)。否则,它将无法计算内容大小。
猜你喜欢
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 2021-05-16
  • 2015-03-06
  • 1970-01-01
  • 2018-09-30
  • 2019-04-25
  • 2015-05-26
相关资源
最近更新 更多