如何在用户类型中将uitextfield中的光标移动到第二个字符

问题描述:

我想让用户不能删除第一个字符或插入新的第一个字符,以及当用户尝试插入新的第一个字符到将光标移动到第二个字符。如何在用户类型中将uitextfield中的光标移动到第二个字符

我已经完成了以下第一部分。

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     if (range.length == 1 && range.location == 0 && string == ""){ 
      return false 
     } 
     if (range.length == 0 && range.location == 0 && string != ""){ 
      return false 
     } 
    return true 
} 

但是,这会导致用户被卡在第一个字符上,无法输入任何内容,除非他们自己移动指针。

如何实现将光标移动到第二个字符位置的第二部分,以便用户可以从第二个字符开始键入?

+0

你给自己定的第一个字符,或者您希望它仍然是空的? –

+0

我给它一个固定的字符,不能被用户删除。 – user1898829

let newPosition = textField.endOfDocument; 
self.yourtextFieldName.selectedTextRange = textField.textRange(from: newPosition, to: newPosition); 
+0

这是接近我想要的。如果只有一个固定的角​​色让我们说一个?那么如果用户键入它做我想要的,但如果有一个?z那么光标应该移动到?和z,但它将它移动到文档的末尾。 – user1898829

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    if let text = textField.text { 
     if range.location == 0 && range.length == 1 { 
      return false 
     } 
     if range.location == 0 && text.characters.count > 0 { 
      let position = textField.position(from: textField.beginningOfDocument, offset: 1)! 
      textField.selectedTextRange = textField.textRange(from: position, to: position) 
     } 
    } 
    return true 
}