一个ViewController由两个名为textName和textEmail的TextField组成。View Controller将光标加载到textName上。textName包含预填充的单词“ @ gmail.com”。
从textName敲击键盘的return键时,焦点将移至Textfield textEmail。此处默认情况下,将光标放置在单词“ @ gmail.com”之后
我想将光标放在开始位置。即@ gmail.com之前
这是我的代码。当我从textName按下返回键时,光标转到textEmail的开头。但是,当我直接点击textEmail时,光标出现在预填充的单词之后。请帮我!
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.textName{
textEmail.becomeFirstResponder()
let desiredPosition = textEmail.beginningOfDocument
textEmail.selectedTextRange = textEmail.textRangeFromPosition(desiredPosition, toPosition: desiredPosition)
}
if textField == self.textEmail{
dismissViewControllerAnimated(true, completion: nil)
}
return true
}
需要注意的是,我确实尝试过编辑并开始对textEmail进行操作,并添加了以下代码,但是它也不起作用。
let desiredPosition = textEmail.beginningOfDocument
textEmail.selectedTextRange = textEmail.textRangeFromPosition(desiredPosition, toPosition: desiredPosition)
尝试以下方法:
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == self.textName{
let beginning = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: beginning, to: beginning)
}
}
因此,请删除textEmail.becomeFirstResponder()
并使用textField.textRange
而不是textEmail.textRangeFromPosition
。
在textFieldDidBeginEditing
函数内部,使用textField
上面示例中所示的参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句