2017-06-15 24 views
1

私はUITextViewに大きく依存するアプリケーションで作業しています。私の理想的な動作は、ユーザーがすぐに二重スペースを押すと、UIButtonのスペースを作るためにテキストカーソルが5スペース先に飛びます。次のコードを実装しましたが、 "quickSpace"領域内の他のすべてのアクションが発生しても、カーソルがジャンプしていないようです。誰でも私が間違っていることを知っていますか?UITextViewでカーソル位置を設定できません

更新:問題は、現在存在する範囲外の点にカーソルを移動しようとしていることだと思います。言い換えれば、誰かが新しいテキストを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 
    } 

答えて

0

メインキューでこれを設定します。

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

どこに行けばよいですか? –

+0

このコードを配置する必要がある場合は、TextViewにボタンを追加します – Bala

関連する問題