Swift3 重写一个带占位符的textView

本文介绍了一个自定义的 UITextView 实现方案,该方案能够在开始输入前显示灰色的占位符文本,并在用户开始编辑时自动隐藏。此外,还提供了键盘隐藏的方法及文本视图的自定义展示。
class PlaceStrTextView: UIView,UITextViewDelegate{
    
    var palceStr = "即将输入的信息" //站位文字
    var inputStr = "" //输入的信息
    
    //创建一个textView
    lazy var textView:UITextView = {
        let tv = UITextView()
        tv.delegate = self
        tv.text = self.palceStr
        tv.textColor = UIColor.gray
        tv.backgroundColor = UIColor.clear
        tv.font = UIFont.systemFont(ofSize: 15)
        return tv
    }()
    
    //私有方法
    func overrideSelf(frame: CGRect) {
        self.frame = frame
        addTextView()
    }
    
    //添加textView
    func addTextView(){
        self.textView.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height)
        self.addSubview(self.textView)
    }
    
    func textViewDidBeginEditing(_ textView: UITextView) {
        if textView.text == palceStr { //一旦开始编辑就将textView滞空并将颜色改为黑色
            textView.text = ""
        }
        textView.textColor = UIColor.black
    }
    
    func textViewDidEndEditing(_ textView: UITextView) {
        if textView.text == "" {//如果用户没有输入任何信息就显示站位字符串
            textView.text = palceStr
            textView.textColor = UIColor.gray
        }else{//一旦输入了信息你则颜色变成黑色
            textView.textColor = UIColor.black
        }
    }
    
    func hiddenKeyBoard(){
        (UIApplication.shared.delegate as! AppDelegate).window?.endEditing(true)
        inputStr = textView.text
    }
    
}

 

     //调用示例
@IBOutlet weak var textView: PlaceStrTextView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. textView.palceStr = "埃及的妇女节阿萨德来看风景安东尼设计开发" textView.overrideSelf(frame: textView.frame) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func tapAction(_ sender: Any) { textView.hiddenKeyBoard() print(textView.inputStr) }

  

 

转载于:https://www.cnblogs.com/mapanguan/p/6394826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值