设置UITextField的光标位置不起作用(快速)

时间:2016-10-19 06:51:19

标签: ios swift uitextfield uitextview

我通过这篇文章Getting and Setting Cursor Position of UITextField and UITextView in Swift,我遇到的问题是选择文字。

我按照推荐帖子中的示例进行操作,但仍然没有看到任何结果。 我创建了一个基本的SingleViewApplication,里面只有一个UITextField。

TextD在viewDidLoad

中设置为“foobar”
    override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
     textField.text = "foobar"   }

在@IBAction编辑开始我尝试使用本文中描述的方法选择整个文本,见下文。

@IBAction func EDB(_ sender: UITextField) {
    let startPosition = textField.beginningOfDocument
    let endPosition = textField.endOfDocument
    textField.selectedTextRange = textField.textRange(from: startPosition, to: endPosition  )
}

我跳的话会选择textField中的所有文字。

没有。

我放了两个断点来显示我的textField的选定范围 让startPosition .... 最后一行 那些断点执行po textField.selectedTextRange!并继续。

它确认我有效地改变了textField的范围

  

< _UITextKitTextRange:0x7fa42bb0d140> (6,0)F

     

< _UITextKitTextRange:0x7fa42b922640> (0,6)F

然而,UI上没有可见的选择,光标停留在textField的末尾。

我缺少什么让UI显示我选择的范围?

基本上我想在用户输入版本时预先选择我的UItextField的特定范围的文本。

2 个答案:

答案 0 :(得分:0)

您可以在按钮操作功能中尝试此代码。

textfield.selectAll(textfield)
希望能帮到你!

答案 1 :(得分:0)

尝试将选择范围包装到另一个方法中并延迟调用它。我不确切地知道你的情况,但在少数情况下,小延迟帮助了我。

这是Swift 2版本:

public boolean deleteProduct(String productName) {
    //Now how to delete the product using hibernate
    //like "delete from DB.product where name=productName"
}