如何在用户类型中将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
}
但是,这会导致用户被卡在第一个字符上,无法输入任何内容,除非他们自己移动指针。
如何实现将光标移动到第二个字符位置的第二部分,以便用户可以从第二个字符开始键入?
答
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
}
你给自己定的第一个字符,或者您希望它仍然是空的? –
我给它一个固定的字符,不能被用户删除。 – user1898829