TextView中的占位符

iOS中的占位符是用于表示View用户的信息文本。
占位符是iOS中TextField的实例属性,但众所周知,这不适用于TextView。

为了在TextView中提供占位符文本并使其表现得像TextField,我们必须使用文本颜色和TextView的委托方法。

为占位符文本和键入的文本分别指定颜色

它有助于我们使用键盘区分占位符文本和键入文本。
假设我们有占位符文本: “请在此处评论…”,然后
var占位符=“请在这里评论…”
并将占位符文本添加到ViewDidLoad()中的TextView中
myTextView.text =占位符
myTextView.textColor = .lightGray

使用TextView的委托方法

当我们开始编辑myTextView时,然后检查文本颜色,如果是灰色或分配给占位符文本的颜色,则使myTextView清除/为空,并设置要显示键入文本的普通文本颜色。

  func textViewDidBeginEditing(__ textView:UITextView){ 
如果textView.textColor == .lightGray {
textView.text =“”
textView.textColor = .black
}
}

当我们结束编辑myTextView时,
检查myTextView是否为空:将空字符串分配给我们先前声明的占位符变量,因为我们使用相同的变量供将来使用。
否则将myTextView文本分配给占位符变量

  func textViewDidEndEditing(_ textView:UITextView){ 
如果textView.text.isEmpty {
textView.text =“请在这里评论...”
textView.textColor = UIColor.lightGray
占位符=“”
}其他{
占位符= textView.text
}
}

我们有一个委托方法,该方法将调用textView中的文本更改,我们正在使用此方法来使占位符变量保持为textView中输入的文本更新

  func textViewDidChange(_ textView:UITextView){ 
占位符= textView.text
}

那个

如果要基于占位符变量中的文本更改颜色,请执行以下操作 :检查myTextView是否具有此“请在此处评论…”文本,然后设置浅色,否则将普通文本颜色设置为您喜欢的文本:

 如果占位符==“请在这里评论...” { 
myTextView.textColor = .lightGray
}其他{
myTextView.textColor = .black
}

特别说明:
允许textview最多容纳某些字符或长至某些高度,就像在聊天模块中一样,我们可以像下面这样

  func textView(_ textView:UITextView,shouldChangeTextIn范围:NSRange,replaceText文本:String)-> Bool { 
返回((textView.text.count)> 180 && textView.frame.size.height> 100.0)吗? 假:真
  } 

检查此链接以获取完整代码: https : //gist.github.com/vikaskore/5d5973f748235b8c04fee46cbacdc4cd

而已! 编码愉快。