2016-03-08 70 views
0

我试图把在占位符到我UITextViews,并找到了解决办法在这里使用的代码这个块:多UITextView中的占位符

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) 
     } 
    } 
} 

它的工作原理,我很喜欢它,但我d喜欢将它应用于同一ViewController中的其他UITextView。我怎么做,而不创建一个textView方法的重复实例?

+0

你应该考虑使用标签。然后在'shouldChangeTextInRange'中检查哪个textView是,并设置正确的占位符文本。 –

回答

0

您可以在您的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) 
     } 
    } 

} 

可能会帮助你。

+0

标签建议帮助,谢谢你们! – Allen

+0

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