【问题标题】:textfield with description label inside带有描述标签的文本字段
【发布时间】:2017-10-01 12:54:13
【问题描述】:

我正在使用适用于 macOS 的 swift 4,我想知道,是否可以在文本字段中添加描述标签?

类似这样的:

“开始:”应该是描述标签,“我的文本”应该是我在文本字段中键入的文本。

如果这是可能的:我怎样才能实现它?

【问题讨论】:

  • 您应该使用占位符字符串。请注意,当用户开始输入时它会消失。 developer.apple.com/documentation/appkit/nstextfield/…
  • 是的,但这不是我想要实现的:(
  • 您不应该尝试改变用户界面的行为方式。照原样使用它。
  • 这会让用户感到困惑。我会尝试选择“开始”。但是如果你真的想这样做,把两个无边框的文本框放在一个白框中。
  • 将标签放在文本字段的前导侧,在它之外。 (“前导”侧是从左到右语言的左侧。)这是执行此操作的正常方式。

标签: swift macos cocoa nstextfield


【解决方案1】:

这可以通过多种方式完成。最简单的解决方案是使用偏移量开始文本字段文本。在其上放置一个带有占位符 Start 的文本字段。然后在其上放置另一个文本字段。使第二个文本字段透明并继承 UITextField。

类文本字段:UITextField {

let padding = UIEdgeInsets(top: 0, left: 40, bottom: 0, right: 5);

override func textRect(forBounds bounds: CGRect) -> CGRect {
    return UIEdgeInsetsInsetRect(bounds, padding)
}

override func placeholderRect(forBounds bounds: CGRect) -> CGRect {
    return UIEdgeInsetsInsetRect(bounds, padding)
}

override func editingRect(forBounds bounds: CGRect) -> CGRect {
    return UIEdgeInsetsInsetRect(bounds, padding)
}

}

【讨论】:

  • 你在NSTextField中搜索过类似的方法吗?
  • 你应该从我的回答中去掉这个概念。
猜你喜欢
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多