答案 0 :(得分:0)
你可以这样做:
1)创建UIView或UITableViewCell类:
class ConfirmTableViewCell: UITableViewCell {
@IBOutlet weak var symbolsTextField: UITextField!
@IBOutlet weak var firstLabel: UILabel!
@IBOutlet weak var secondLabel: UILabel!
@IBOutlet weak var thirdLabel: UILabel!
@IBOutlet weak var fourthLabel: UILabel!
var code: String = ""
override func awakeFromNib() {
super.awakeFromNib()
symbolsTextField.delegate = self
symbolsTextField.becomeFirstResponder()
resetContent()
}
func resetContent() {
firstLabel.text = nil
secondLabel.text = nil
thirdLabel.text = nil
fourthLabel.text = nil
}
}
2)添加xib或者您可以在storyboard中执行此操作。使用明文颜色将UITextField
添加到UIView
。
3)添加扩展名:
extension ConfirmTableViewCell: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if range.location > 3 {
textField.text?.removeLast()
}
setupLabels(character: string, range: range)
return true
}
func setupLabels(character: String, range: NSRange) {
if range.location > 3 {
self.code.removeLast()
}
if range.length == 0 {
self.code += character
} else {
self.code.removeLast()
}
var codeString: String = self.code
if let symbol = codeString.first {
firstLabel.text = String(symbol)
codeString.removeFirst()
} else {
firstLabel.text = nil
}
if let symbol = codeString.first {
secondLabel.text = String(symbol)
codeString.removeFirst()
} else {
secondLabel.text = nil
}
if let symbol = codeString.first {
thirdLabel.text = String(symbol)
codeString.removeFirst()
} else {
thirdLabel.text = nil
}
if let symbol = codeString.first {
fourthLabel.text = String(symbol)
} else {
fourthLabel.text = nil
}
}
}