【发布时间】:2018-08-29 01:20:31
【问题描述】:
【问题讨论】:
-
尝试使用这个pod:github.com/varunpm1/VPMOTPView,它可能对你有帮助
标签: swift uiimageview swift2 uitextfield
【问题讨论】:
标签: swift uiimageview swift2 uitextfield
你可以这样做:
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 或者您可以在情节提要中添加。使用明文颜色将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
}
}
}
【讨论】: