我尝试使用4个textField创建一个类似于锁定屏幕的登录屏幕。 我面临的问题是将焦点从一个文本字段更改为下一个文本字段。
secondTextField.becomeFirstResponder()
时,firstTextField的值被复制到secondTextField 以下是我到目前为止所做的工作,我无法找到解决问题的方法:
firstText.delegate = self
secondText.delegate = self
thirdText.delegate = self
firstText.becomeFirstResponder()
func textField(textField:UITextField,shouldChangeCharactersInRange range:NSRange,replacementString string:String) - >布尔{ var newLength = countElements(textField.text)+ countElements(string) - range.length
if newLength == 1 {
if textField == firstText{
changeFocus(textField)
}else if textField == secondText {
changeFocus(textField)
}else if textField == thirdText {
changeFocus(textField)
}
}
return newLength <= 1
}
func changeFocus(nextFocus:UITextField){
if nextFocus == firstText {
firstText.resignFirstResponder()
secondText.becomeFirstResponder()
} else if nextFocus == secondText {
secondText.resignFirstResponder()
thirdText.becomeFirstResponder()
} else if nextFocus == thirdText {
thirdText.resignFirstResponder()
}
}
如何正确地做到这一点,请提供任何帮助和建议。
答案 0 :(得分:0)
使用此委托方法更改焦点
func textFieldShouldReturn(textField: UITextField) -> Bool
答案 1 :(得分:0)
向 svrushal 回复添加更多内容:
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == firstText {
secondText.becomeFirstResponder()
}
if textField == secondText {
thirdText.becomeFirstResponder()
}
if textField == thirdText {
fourthText.becomeFirstResponder()
}
}
答案 2 :(得分:0)
您可以参考此链接https://github.com/dhennessy/PAPasscode/blob/master/PAPasscode/PAPasscodeViewController.h
它会帮助你。
答案 3 :(得分:0)
我在这里发现了类似的内容:similar
有了它的工作,有两个限制:
以下是方法
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
var shouldProcess = false
var moveToNextTextField = false
var insertStringLength = countElements(string)
if insertStringLength == 0 {
shouldProcess = true
}
else {
if countElements(textField.text) == 0 {
shouldProcess = true
}
}
if shouldProcess {
var myString = textField.text
if countElements(myString) == 0{
myString = myString + string
password = password + myString
moveToNextTextField = true
}
textField.text = myString
if moveToNextTextField {
changeFocus(textField)
}
}
return false
}
更改焦点的方法:
func changeFocus(nextTextField : UITextField){
if nextTextField == firstText {
firstText.resignFirstResponder()
secondText.becomeFirstResponder()
} else if nextTextField == secondText {
secondText.resignFirstResponder()
thirdText.becomeFirstResponder()
} else if nextTextField == thirdText {
thirdText.resignFirstResponder()
fourthText.becomeFirstResponder()
} else if nextTextField == fourthText {
fourthText.resignFirstResponder()
}
}
检查引脚/密码的方法:
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
if textField == fourthText {
thirdText.resignFirstResponder()
let pass = defaultUser.stringForKey(Admin)
println("password = \(password)")
if pass == password {
println("the password is correct")
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.performSegueWithIdentifier("SegueToSecond", sender: self)
}
} else {
println("wrong password")
thirdText.text = ""
secondText.text = ""
firstText.text = ""
fourthText.text = ""
password = ""
view.reloadInputViews()
}
}
return true
}
希望这些人稍后会帮助他们。