【问题标题】:Can't set cursor position in UITextView无法在 UITextView 中设置光标位置
【发布时间】:2017-06-15 03:50:25
【问题描述】:

我正在开发一个高度依赖 UITextView 的应用程序。我的理想行为是当用户快速按下双空格时,文本光标将向前跳 5 个空格为 UIButton 腾出空间。我已经实现了以下代码,但是即使“quickSpace”区域中的所有其他操作都发生了,光标似乎也没有跳跃。有谁知道我做错了什么?

更新:我认为问题在于我试图将光标跳转到当前存在范围之外的点。换句话说,有人正在向 UITextView 输入新文本,并且范围设置为光标所在的位置。那是范围的尽头吗?是否可以将光标发送到当前存在的范围之外?

    if(text==" "){  
        let now=Date()
        if let last=previousSpaceTimestamp
        {
            if now.timeIntervalSince(last)<0.3
            {
                //mainTextBox.text=textView.text.appending("hello")
                isQuickSpace=true
                var checkOffButton: UIButton=createCheckButton()
                checkOffButton.backgroundColor=UIColor.green
                checkOffButton.frame.size=CGSize(width: 20, height: 20)
                //checkOffButton.frame.offsetBy(dx: 0, dy: CGFloat(buttonYPos))
               mainTextBox.addSubview(checkOffButton)
                buttonYPos=buttonYPos+15
                if let currentRange=mainTextBox.selectedTextRange
                {
                    if let newPosition=mainTextBox.position(from: currentRange.start,
offset: 200)
                    {
           mainTextBox.selectedTextRange=mainTextBox.textRange(from: newPosition,
to: newPosition)
                    }
                }
                return false
            }
        }

        previousSpaceTimestamp=now

    }
    else
    {
            previousSpaceTimestamp=nil
     }
        return true
    }

【问题讨论】:

    标签: ios swift cursor uitextview


    【解决方案1】:

    在主队列中这样设置 TextView 范围。

    DispatchQueue.main.async {
            mainTextBox.isEditable = true
            mainTextBox.selectedRange = NSMakeRange(2, 0)
        }
    

    【讨论】:

    • 那应该去哪里?
    • 在哪里把你的按钮添加到TextView之后你需要把这段代码
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多