让按钮快速将文本添加到 UITextField

Posted

技术标签:

【中文标题】让按钮快速将文本添加到 UITextField【英文标题】:Having a button add text to a UITextField in swift 【发布时间】:2015-03-19 02:31:11 【问题描述】:

我正在向 twitter 应用程序创建帖子,并希望通过可选择的按钮将各种文本添加到 UITextField。 UIButton 用于各种主题标签,以加快编写推文的过程。我尝试了几个在 Stack 上找到的解决方案,但似乎都没有,而且它们都在 Objective-C 中。

点击按钮前撰写推文视图的屏幕截图。

http://postimg.org/image/5qoyk6673/

选择按钮并将文本添加到文本字段后撰写推文视图的屏幕截图。

http://postimg.org/image/vp08wsa6b/fa7c7a83/

class TweetComposeViewControler: UIViewController, UITextViewDelegate 
var selectedAccount : ACAccount!

@IBOutlet var tweetContent: UITextView!

@IBAction func specializedButton(sender: UIButton) 
    tweetContent.text = sender as UIButton
    tweetContent.text.stringByAppendingString(specializedButton(titleLabel.text))



func insertHashtag(sender: UIButton!) 
    tweetContent.text = tweetContent.text.stringByAppendingString(sender.titleLabel.text)

【问题讨论】:

我建议发布您当前的代码。 class TweetComposeViewControler: UIViewController, UITextViewDelegate var selectedAccount : ACAccount! @IBOutlet var tweetContent: UITextView! @IBAction func specializedButton(sender: AnyObject) tweetContent.text = specializedButton.titleLabel.text override func viewDidLoad() super.viewDidLoad() self.tweetContent.delegate = self override func didReceiveMemoryWarning() super.didReceiveMemoryWarning() 【参考方案1】:

您可以将 UITextFields 文本设置为 UIButton 的标题:

txtField.text = hashTagButton.titleLabel.text

如果你想附加文本:

txtField.text = textField.text.stringByAppendingString(hashTagButton.titleLabel.text)

为了让您的按钮在按下它们时更新文本,您需要为按下按钮时添加一个目标选择器。这可以通过 Storyboard 或以编程方式完成。

以编程方式

您可以使用以下方法将相同的选择器添加到所有按钮:

 hashtagButton.addTarget(self, action: Selector("insertHashtag:"), forControlEvents: .TouchUpInside)

只要按下hashtagButton,就会调用insertHashtag 函数。由于选择器末尾的:,它也会将自己作为参数传递,因此您可以使用它来获取按钮的标题,而不是为每个按钮创建不同的选择器。

func insertHashtag(sender: UIButton!) 
   txtField.text = textField.text.stringByAppendingString(sender.titleLabel!.text)

使用 IBAction

@IBAction func insertHashtag(sender: AnyObject) 
    txtField.text = sender as UIButton 
    textField.text.stringByAppendingString(btn.titleLabel!.text)

在这里,您将 sender 参数转换为 UIButton,因为您知道 UIButton 是调用它的对象的类型。

如果您知道只有 UIButton 会导致此方法,您可以这样做:

@IBAction func insertHashtag(btn: UIButton ) 
    txtField.text = sender as UIButton 
    textField.text.stringByAppendingString(btn.titleLabel!.text)

回复您的更新 您添加的代码需要修改为如下所示:

@IBAction func specializedButton(sender: UIButton) 
    tweetContent.text.stringByAppendingString(sender.titleLabel!.text)   

这里sender 是您的 UIButton,您将它作为 UIButton 传递,因此您无需转换它。

【讨论】:

评论不用于扩展讨论;这个对话是moved to chat。

以上是关于让按钮快速将文本添加到 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

快速将文本字段添加到 UITableViewCell

如何将 Facebook“分享”按钮添加到“快速查看”弹出模式?

快速点击按钮时添加行或文本字段

如何在快速按下按钮时添加独立的 UIView?

如何快速将完成按钮添加到数字键盘?

将按钮列添加到 DataGridView 并将条件文本仅应用于单击的按钮