2016-06-15 4 views
0

ユーザメッセージエントリ用のTextViewを使用すると、ユーザ編集中に編集および選択が可能です。 フィールドの下にあるボタンの1つで、TextViewを編集モードとハッシュタグモードの間で切り替えます。 タグに切り替えると、TextViewに編集可能な&の選択可能なプロパティが無効になり、タップを検出する機能があり、テキスト内の文字の位置が返されます。Swift 2.2、iOS 9.3&Xcode 7を使用して、UITextView.text内で単語を判別し、プレフィックス付き単語を修正する方法は?

単語がある場合はそれを判断し、UITextView.textの単語に#をつけて修正する必要があります。ただし、すでにハッシュが2つある場合を除きます。 私はロジックの正規表現を使用しています。

タップした文字の単語を決定するための高レベルの方法を見つけることができませんでした。 私はAppleの開発者を検索しました。リブ。 raywenderlichやGrok Swiftのようなサイトはありますが、確かにそこにいるはずのメソッドを見つけることができません。

現在のチャプタが有効なワードディバイダであるかどうかをテストし、そうでなければ文字インデックスを減らし、ワード境界が決定されるまでテストすることで実装できます。どの時点で、私は以前のインデックスに戻り、#の文字をテストします。#の場合、次の文字をテストし、#ではない場合は#文字を開始に追加します言葉の

UIKit、TextKit、またはUITextViewまたはNSTextStorageのメソッド内に、その単語のタップされた文字とNSRangeの単語を返す関数がありますか? また、TextViewのテキストに#を追加する正しい方法は何ですか? [TextViewに:shouldChangeTextInRange:て、replacementTextまたはtextView.textStorage:replaceCharactersInRange:withString:]

ので、私はPC、プレイステーションやゲームボーイに商業的に取り組んできましたが、これが初めてアプリを開発し、iPhone/Macプラットフォームを使用しています私は本当に助言を使うことができます。

答えて

0

あなたは

let tapGesture = UITapGestureRecognizer(target: self, action: "textTapped:") 
    tapGesture.headline = indexPath 
    tapGesture.numberOfTapsRequired = 1 
    textview2.addGestureRecognizer(tapGesture) 


func textTapped(recognizer: MyTapGestureRecognizer){ 

    let textView: UITextView = recognizer.view as! UITextView 
    var layoutManager: NSLayoutManager = textView.layoutManager 
    var location: CGPoint = recognizer.locationInView(textView) 
    let position: CGPoint = CGPointMake(location.x, location.y) 
    location.x -= textview2.textContainerInset.left 
    location.y -= textview2.textContainerInset.top 
    var charIndex: Int 
    charIndex = layoutManager.characterIndexForPoint(location, inTextContainer: textview2.textContainer, fractionOfDistanceBetweenInsertionPoints: nil) 

    if charIndex < textview2.textStorage.length 
      { 

     print(charIndex) 
      } 

}

0

ためのTextViewにguestureを追加タップ文字インデックスを検出するためのデリゲートshouldChangeCharactersInRange

let stringprocess = stringfordetecting.text 
    let tok = stringprocess!.componentsSeparatedByString(" ") 
    for item in tok 

    { 
     let demo = String(item) 

     if demo.hasPrefix("#") 
     { 

     let range = (stringfordetecting.text! as NSString).rangeOfString(item) 

     //add code 

     } 

     else 
     { 
     //add code  
     } 

内のコードを呼び出す必要が#を検出するためのタップ状態認識装置機能内のテキストビュー内のタップされた文字を検出する。

関連する問題