多个 UITextView 占位符

Posted

技术标签:

【中文标题】多个 UITextView 占位符【英文标题】:Multiple UITextView placeholders 【发布时间】:2016-06-21 21:32:32 【问题描述】:

我正在尝试将占位符放入我的 UITextViews 中,并在此处使用这段代码找到了解决方案:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool 

    let currentText:NSString = storyView.text 
    let updatedText = currentText.stringByReplacingCharactersInRange(range, withString:text)

    if updatedText.isEmpty 
        storyView.text = "Write out your story here!"
        storyView.textColor = UIColor.lightGrayColor()
        storyView.selectedTextRange = storyView.textRangeFromPosition(storyView.beginningOfDocument, toPosition: storyView.beginningOfDocument)
        return false

    else if storyView.textColor == UIColor.lightGrayColor() && !text.isEmpty 
        storyView.text = nil
        storyView.textColor = UIColor.blackColor()
    

    return true


func textViewDidChangeSelection(storyView: UITextView) 
    if self.view.window != nil 
        if storyView.textColor == UIColor.lightGrayColor() 
            storyView.selectedTextRange = storyView.textRangeFromPosition(storyView.beginningOfDocument, toPosition: storyView.beginningOfDocument)
        
    

它可以工作,我很满意,但我想将它应用到同一个 ViewController 中的其他 UITextView。如果不创建 textView 方法的重复实例,我该怎么做?

【问题讨论】:

您应该考虑使用标签。然后在shouldChangeTextInRange 中检查哪个 textView 是,并设置正确的占位符文本。 【参考方案1】:

您可以在您的shouldChangeTextInRange 方法中使用textField.tag

为您的textField 或相同的viewcontroller 提供标签。并将该标签用于shouldChangeTextInRange 方法。

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool 

    let currentText:NSString = storyView.text 
    let updatedText = currentText.stringByReplacingCharactersInRange(range, withString:text)

    if updatedText.isEmpty 


if (textField.tag==0)//
 
   storyView.text = "Write out your story here!" // stuff

else if(textField.tag==1)//
 
    storyView.text = "Example 2 "// stuff

   storyView.textColor = UIColor.lightGrayColor()
  storyView.selectedTextRange = storyView.textRangeFromPosition(storyView.beginningOfDocument, toPosition: storyView.beginningOfDocument)
        return false

    else if storyView.textColor == UIColor.lightGrayColor() && !text.isEmpty 
        storyView.text = nil
        storyView.textColor = UIColor.blackColor()
    

    return true


func textViewDidChangeSelection(storyView: UITextView) 
    if self.view.window != nil 
        if storyView.textColor == UIColor.lightGrayColor() 
            storyView.selectedTextRange = storyView.textRangeFromPosition(storyView.beginningOfDocument, toPosition: storyView.beginningOfDocument)
        
    


也许对你有帮助。

【讨论】:

@allen 如果我的回答对你有帮助。请给我点赞或标记为答案。

以上是关于多个 UITextView 占位符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITextView 中插入占位符? [复制]

在 Swift 中的 UITextView 中添加占位符文本?

创建具有不同颜色和字体的 UITextView 占位符

IOS7中的UITextView需要了解占位符[重复]

swift 在UITextView(Swift)中实现占位符的正确方法

Swift:在 UITextView 中使用占位符文本禁用空白/换行符文本的栏按钮