【问题标题】:How to make label editable on a button click and show keyboard to type text?如何在单击按钮时使标签可编辑并显示键盘以输入文本?
【发布时间】:2016-07-25 07:32:44
【问题描述】:

我想要一个“编辑”按钮,以便能够更改标签的文本。

我需要使用键盘来编写新文本。我的意思是我知道如何用label.text = "new label" 制作一个按钮,但我想让用户有可能用他的键盘更改标签文本。 我尝试使用文本视图,但我们不能(我自己和互联网上没有找到任何解决方案)制作一个可以将我们重定向到文本视图以更改文本的按钮。

我经常使用故事板,所以如果您有故事板解决方案,那将是完美的,但我也会理解 Objective-C 和 Swift :)

谢谢!

编辑:谢谢 Henrique da Costa,解决方案是将[TextView becomeFirstResponder]; 放在按钮操作中。 TextView.becomeFirstResponder() 在 Swift 中。

【问题讨论】:

  • 你按下按钮了吗?文本视图成为第一响应者并准备好进行编辑。你的编辑按钮变成了一个保存按钮。您在文本视图中进行编辑,然后按保存按钮。您将 textview 的文本传递给标签。这能满足您的要求吗?

标签: ios objective-c swift storyboard


【解决方案1】:

您可以拥有一个带有 placeHolder“用户信息”的文本字段,并且没有启用用户交互:

然后您可以为您的 editButton 创建 Action 并在函数内部进行

textField.view.userInteractionEnabled = true
textField.becomeFirstResponder()

这将打开键盘让用户输入他的信息。

【讨论】:

  • 我需要多行信息,但我会尝试使用 textView.becomeFirstResponder !编辑:它适用于按钮中的[TextView becomeFirstResponder];。非常感谢!
【解决方案2】:

您可以使用UITextField 代替UILabel,然后切换enabled 属性。

【讨论】:

  • 我需要几行,所以它不适合我的工作,但这也可以!谢谢
【解决方案3】:

您可以在StoryBoard 中添加UITextField 并将其连接到Controller 类。现在修改Edit按钮动作如图

yourTextField.becomeFirstResponder()

这将打开键盘并帮助您的控制器接收输入的文本。现在您可以选择显示或隐藏UITextField。如果它被隐藏,您可以立即使用每个字符更新标签,如果显示,您可以在用户点击 return 左右时修改标签文本。使用hidden属性将UITextField隐藏在viewDidLoad

yourTextField.hidden = true

现在将Controller 设置为接收viewDidLoad 中的UITextField 委托属性,并使用UITextFieldDelegate 扩展控制器类。

yourTextField.delegate = self

即时修改标签文字override方法

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool

当用户在键盘上点击return时修改标签,override

func textFieldShouldReturn(textField: UITextField) -> Bool

【讨论】:

  • 我需要几行,所以它不适合我的工作,但这也可以!谢谢
  • 要向UILabel添加多行,设置yourLabel.numberOfLines = 0
  • 是的,我知道,但这是一个文本字段,而不是标签;)
猜你喜欢
  • 2019-05-19
  • 2018-09-16
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
相关资源
最近更新 更多