水军日常。
//获取对应的label
var keyView : UIView?
1、弹出键盘
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let textField = UITextField.init()
textField.delegate = self
textField.keyboardType = .numberPad
textField.keyboardAppearance = .dark
textField.inputAccessoryView = self.creatHeaderViewForKerboard()
self.view.addSubview(textField)
textField.becomeFirstResponder()
}
2、UI
/**创建UI界面*/
func creatHeaderViewForKerboard() -> UIView {
keyView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: SCREENW, height: 150))
keyView?.backgroundColor = UIColor.darkGray
let labelWidth = (SCREENW - 70) / 6
//创建显示label
for i in 0..<6 {
let lable : UILabel = UILabel.init(frame: CGRect.init(x: CGFloat(i) * (labelWidth + 10) + 10, y: 75 - labelWidth / 2, width: labelWidth, height: labelWidth))
lable.layer.borderWidth = 1
lable.layer.borderColor = UIColor.darkGray.cgColor
lable.tag = 100 + i
lable.backgroundColor = .white
lable.textAlignment = .center
lable.font = UIFont.boldSystemFont(ofSize: 25.0)
keyView?.addSubview(lable)
}
//切左上 右上圆角
let path = UIBezierPath.init(roundedRect: keyView!.bounds, byRoundingCorners: [UIRectCorner.topRight, UIRectCorner.topLeft], cornerRadii: CGSize.init(width: 20, height: 20))
let maskLayer = CAShapeLayer.init()
maskLayer.frame = keyView!.bounds
maskLayer.path = path.cgPath
keyView?.layer.mask = maskLayer
return keyView!
}
3、UI界面输入删除数据处理
/**
本方法无论输入还是删除都会走一遍
*/
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if range.location > 5 {
return false
}
else {
let titleStr = NSString.init(string: textField.text!)
//输入
if titleStr.length == range.location {
print("add")
}
//删除
else if titleStr.length > range.location {
print("delete")
}
let label = self.keyView?.viewWithTag(100 + range.location) as! UILabel
label.text = string
return true
}
}
4、撤销键盘
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
网友评论