SWIFT UITextField 重写键盘删除按钮、限制输入文

2024-01-06  本文已影响0人  江河_ios

基于swift5.0实现

希望能帮到各位
 let changeNameField = CustomTextField()
        changeNameField.backgroundColor = .white
        changeNameField.text = nameStr
        changeNameField.delegate = self
        changeNameField.keyboardType = .default
        changeNameField.clearButtonMode = .always
        changeNameField.borderStyle = .none
        changeNameField.becomeFirstResponder()//弹出输入键盘
        changeNameField.returnKeyType = .done
        changeNameField.cstmDelegate = self
        changeNameField.addTarget(self, action: #selector(textFieldChangeMessage), for: .editingChanged)
        whiteView.addSubview(changeNameField)
        changeNameField.snp.makeConstraints { make in
            make.left.equalTo(10)
            make.right.equalTo(-10)
            make.height.equalTo(50)
        }
import UIKit
protocol CustomTextFiledDelegate  {
    func customDeleteBackward(_ textField:UITextField)
}
 
class CustomTextField : UITextField {
     var cstmDelegate :CustomTextFiledDelegate?
    override func deleteBackward() {
        self.cstmDelegate?.customDeleteBackward(self)
        super.deleteBackward()

    }
}
 func customDeleteBackward(_ textField: UITextField) {
     
 }
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        let count: Int = textField.text!.count
        if  (count > 15) {
            return false
        }else{
            return true
        }
    }
 textField.addTarget(self, action: #selector(textFieldChangeMessage), for: .editingChanged)

    //MARK: 限制输入的文本15个字符
    @objc func textFieldChangeMessage(_ textField : UITextField){
        let text  =  self.changeNameField.text!
        if text.count > 15 {
            var text  =  self.changeNameField.text!
            //替换一段字符
            let strat = text.index(text.startIndex, offsetBy: 15)
            let end = text.endIndex
            text = text.replacingCharacters(in: strat..<end, with: "")

            self.changeNameField.text = text
        }
      
    }
  @objc func textFieldChangeMessage(_ textField : UITextField){
        let text  =  self.changeNameField.text!
        if text.count > 15 {
            var text  =  self.changeNameField.text!
            
//            //删除一段字符
            text.removeSubrange(text.index(text.startIndex, offsetBy: 15)..<text.endIndex)
            
            self.changeNameField.text = text
        }
       
    }
上一篇 下一篇

猜你喜欢

热点阅读