Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在文本字段中分配和辞职第一响应者_Ios_Iphone_Swift3 - Fatal编程技术网

Ios 在文本字段中分配和辞职第一响应者

Ios 在文本字段中分配和辞职第一响应者,ios,iphone,swift3,Ios,Iphone,Swift3,我实现了一个OTP功能,如本文所示,但在以下几行中出现了一个错误,因为Swift 3不推荐使用它们 let start = text!.startIndex.advancedBy(range.location) let end = start.advancedBy(range.length) 解决方法是什么?如果要实现otp功能。下面是您可以使用的代码。 每个文本字段都有标记,根据标记值,您可以轻松响应下一个文本字段 extension YOUR_VC:UITextFieldD

我实现了一个OTP功能,如本文所示,但在以下几行中出现了一个错误,因为Swift 3不推荐使用它们

    let start = text!.startIndex.advancedBy(range.location)
    let end = start.advancedBy(range.length)

解决方法是什么?

如果要实现otp功能。下面是您可以使用的代码。 每个文本字段都有标记,根据标记值,您可以轻松响应下一个文本字段

extension YOUR_VC:UITextFieldDelegate{

func textFieldDidBeginEditing(_ textField: UITextField) {
 // to make text field empty    
 textField.text = ""
}


func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

    if(string.length == 1){
        textField.text = string
        textField.resignFirstResponder();

    }
    return false
}

func textFieldDidEndEditing(_ textField: UITextField) {
    // for making next text field first responder after a character is entered in previous textfield
    switch textField.tag {
    case 1:
        otpTextTwo.becomeFirstResponder()
    case 2:
        otpTextThree.becomeFirstResponder()
    case 3:
        otpTextFour.becomeFirstResponder()
    case 4:
        otpTextFive.becomeFirstResponder()
    case 5:
        otpTextSix.becomeFirstResponder()
    case 6:

       // self.doneFecthingOtp()
    default:
        //print("NOt case")
    }
} }

希望这会有所帮助。

您应该在swift3中这样写:

let start = text?.index((text?.startIndex)!, offsetBy: range.location)
let end = text?.index(start!, offsetBy: range.length)
let indexRange = text?[start! ..< end!]
let start=text?.index((text?.startIndex)!,偏移量:range.location)
让结束=文本?.index(开始!,偏移量:range.length)
让indexRange=文本?[开始!.<结束!]

添加有问题的错误。使用[textField resignFirstResponder]、[textField becomeFirstResponder]是这些方法,但在使用这些方法时会出现什么错误?“advancedBy”不可用:若要将索引提前n步,请在生成索引的CharacterView实例上调用“index(\uOfSetBy:)”。