如何在UITextView中以编程方式移动光标?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在UITextView中以编程方式移动光标?相关的知识,希望对你有一定的参考价值。

如果我在UITextField中输入一些文本,在另一个UITextField中输入文本,然后在第一个UITextField中向后点击,我希望光标位于末尾,因此我可以继续键入或按退格键。由于我的文本右对齐,因此有些复杂,因此您需要非常精确地点击现有文本的右侧。

我在UITextField的Touch Down操作中具有以下代码。如果UITextFields可以使用“ Touch Up Inside”操作,那将是完美的,但事实并非如此。这项工作正常,正在寻找有关更无缝实施的一些建议。

编辑:我添加了将tintColor更改为清除然后变回蓝色的功能,这消除了光标移动的短暂视觉效果。

@IBAction func touchDown(_ sender: Any) 
        Text.tintColor = .clear
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) 
            let newPosition = self.Text.endOfDocument
            self.Text.selectedTextRange = self.Text.textRange(from: newPosition, to: newPosition)
        self.Text.tintColor = .blue
        
答案

发布答案,因为我上面的编辑代码确实为我的查询提供了合适的解决方案。延迟和光标移动的视觉效果是不希望的,但是可以通过使光标清晰并改回来解决。

//default UI blue
let uiBlue = UIColor(red: CGFloat(0/255.0), green: CGFloat(122/255.0), blue: CGFloat(255/255.0), alpha: CGFloat(1.0)) 

@IBAction func Touch(_ sender: Any) 
    Text.tintColor = .clear
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) 
        let newPosition = self.Text.endOfDocument
        self.Text.selectedTextRange = self.Text.textRange(from: newPosition, to: newPosition)
        self.Text.tintColor = self.uiBlue
    

以上是关于如何在UITextView中以编程方式移动光标?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 UITextView 中以编程方式选择文本吗?

在 Swift 2 中以编程方式调整 UITextView 的大小以扩大其宽度

将光标放在用户触摸的 UITextView 上

UITextview 光标移动到行尾

当移动到嵌入在 UITableViewCell 中的 UITextView 中的新行时,光标消失

如何在 ios 应用程序中以编程方式移动到第二个视图?