UILabel UITextField UITextView

Posted

技术标签:

【中文标题】UILabel UITextField UITextView【英文标题】: 【发布时间】:2011-05-18 05:49:40 【问题描述】:

它们之间的根本区别是什么?

一个不可编辑的UITextField实际上是一个UILabel吗?

它们本质上是一样的吗?

【问题讨论】:

【参考方案1】: UILabel: "UILabel 类实现了一个只读文本视图。" UITextField:“UITextField 对象是一个控件,当用户按下返回按钮时,它会显示可编辑文本并向目标对象发送操作消息。” UITextView:“UITextView 类实现了可滚动的多行文本区域的行为。”

所以:

标签是只读的 文本字段是可编辑的,并且当文本太长而无法一次显示时提供水平字符搜索(不是真正的滚动)。一般用于输入短文本。 文本视图也是可编辑的,但当文本太长而无法全部显示时提供垂直滚动。

【讨论】:

这如何回答这个问题:“不可编辑的 UITextField 是否实际上是 UILabel?”。未启用的 UITextField 和 UILabel 之间的渲染或行为是否有任何差异。 谢谢你......你已经节省了 15 分钟的痛苦,深思熟虑的研究! :)【参考方案2】:

除了上面的答案,UITextView 还有可选择的文本。这意味着您可以复制它或让设备说出文本。

【讨论】:

应该只是评论。 你也可以让设备说出UILabel的文字吗? @Petar, Amory 的意思是用户可以通过选择他们想听的文本并使用联系人菜单来选择自己说文本。 您也可以复制文本字段的内容。【参考方案3】: UILabel - 用于静态文本 渲染, UITextField - 是一个输入 字段, UITextView - 是一个多行 输入框

【讨论】:

这是否意味着 UITextView 在启用多行的情况下是有效的 UITextField? UITextField 基类是 UIControl、UIView 所以它不能像 UITextView 那样滚动。 UITextView 基类是 UIScrollView UIView。如果我想要一个像文本窗格这样的可自我扩展的可滚动编辑器,我使用 UITextView。如果我只想要一个没有滚动的简单输入,我使用 UITextField。【参考方案4】:

Apple 在这次精彩的演讲中终于谈到了这一部分:

https://developer.apple.com/videos/play/wwdc2018/221/

关键点如下:

【讨论】:

【参考方案5】:

除此之外:只有使用 UILabel 才能获得自动收缩功能,否则您应该实现该功能(如果需要)

【讨论】:

以上是关于UILabel UITextField UITextView的主要内容,如果未能解决你的问题,请参考以下文章

在顶部添加UILabel作为UITextField的子视图

如何制作字幕 UILabel / UITextField / NSTextField

无法将UITextField中的值作为子视图返回到UITableViewCell中的UILabel

RxSwift 错误:属性“文本”要求“UITextField”继承自“UILabel”

使用自动布局使 UILabel 和 UITextField 彼此相邻

将 UITextfield“清除”默认按钮连接到 UILabel