我想知道是否可以使用swift为文本字段创建自定义背景,例如期望4个字母,文本字段有4个方格。 THX
答案 0 :(得分:0)
你的意思是这样吗?
// Background
txtField.backgroundColor = UIColor.greenColor()
// Placeholder
txtField.placeholder = "1"
// Corner radius
txtField.layer.cornerRadius = 8
// A Boolean indicating whether sublayers are clipped to the layer’s bounds
txtField.layer.masksToBounds = true
<强>更新强>
这是一种方法,它将随机化一个数字,然后根据已生成的数字创建文本字段。如果您已有号码,则当然不需要随机功能。您唯一要做的就是将var i = 0; i < rand; i++
rand更改为您的变量。 textFieldEditingChanged
函数是用户尝试向textField
添加新字符时的事件,并且检查只允许每个textField
中包含一个字符。
let rand = Int(arc4random_uniform(10) + 2)
for var i = 0; i < rand; i++ {
let myField: UITextField = UITextField (frame:CGRectMake(CGFloat(i * 30), 50, 25, 25));
myField.text = String(i)
myField.backgroundColor = UIColor.redColor()
myField.addTarget(self, action: "textFieldEditingChanged:", forControlEvents: UIControlEvents.EditingChanged)
self.view.addSubview(myField)
}
如果您只有一个String
,并且想要填充textField
中的每个字符,您可以这样做:
let word = "Car"
for var i = 0; i < word.characters.count; i++ {
let myField: UITextField = UITextField (frame:CGRectMake(CGFloat(i * 30), 50, 25, 25));
myField.text = String(word[word.startIndex.advancedBy(i)])
myField.backgroundColor = UIColor.redColor()
myField.addTarget(self, action: "textFieldEditingChanged:", forControlEvents: UIControlEvents.EditingChanged)
self.view.addSubview(myField)
}
单击textField的事件
func textFieldEditingChanged(target: UITextField){
if (target.text?.characters.count > 1){
target.text = target.text?.substringToIndex(target.text!.endIndex.predecessor())
}
}
<强>更新强> 改变响应者
声明变量var tagNumber = 0
,当您在for语句中循环并创建textFields时,只需将此行添加到myField.tag = i
即可。在textFieldEditingChanged
函数中,添加以下代码块:
if (target.tag < tagNumber){
let nextTag: NSInteger = target.tag + 1;
// Try to find next responder
if let nextResponder: UIResponder! =
target.superview!.viewWithTag(nextTag){
nextResponder.becomeFirstResponder()
}
}