swift 重写带占位符的textView

1.png
2.png
3.png
//简单使用
@IBOutlet weak var feedbackTV: PlaceholderTextView!
feedbackTV.overrideSelf(frame: feedbackTV.frame)
feedbackTV.palceStr = feedbackStr


 @IBAction func commitFeedbackAction(_ sender: Any) {
        feedbackTV.hiddenKeyBoard()
        if feedbackTV.inputStr == "" {
            self.showHint("您没有输入任何信息")
            return
        }
        
        if feedbackTV.inputStr == feedbackStr {
            self.showHint("您没有输入任何信息")
            return
        }
  }

import UIKit

typealias PlaceholderTextViewBlock = (_ inputStr:String) -> Void

class PlaceholderTextView: UIView,UITextViewDelegate{
    var pblock:PlaceholderTextViewBlock?
    func backInpuStr(block:@escaping PlaceholderTextViewBlock){
       pblock = block
    }
    //站位信息
    @IBInspectable var palceStr:String = ""{
        didSet{
           self.textView.text = self.palceStr
           self.textView.textColor = UIColor.gray
        }
    }

    var inputStr = "" //输入的信息
    
    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()
    }
    
    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.text = ""
        }
        textView.textColor = UIColor.black
    }
    
    func textViewDidEndEditing(_ textView: UITextView) {
        //如果为空或者输入的信息与站位信息一样
        inputStr = textView.text
        if textView.text == "" || textView.text == palceStr {
            textView.text = palceStr
            textView.textColor = UIColor.gray
        }else{
            textView.textColor = UIColor.black
        }
        if let block = pblock {
            block(inputStr)
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容