2016-06-15 11 views
0

사용자 메시지 항목에 TextView를 사용하면 사용자 편집 중에 편집 및 선택할 수 있습니다. 필드 아래에있는 버튼 중 하나 인 TextView를 편집 및 해시 태깅 모드로 전환합니다. 태그로 전환하면 TextView에 편집 가능한 &의 선택 가능한 속성이 있습니다. 탭 기능을 감지하고 텍스트 내의 문자 위치를 반환합니다.UITextView.text 내에서 단어를 결정하고 Swift 2.2, iOS 9.3 및 Xcode 7을 사용하여 접두어로 단어를 수정하는 방법?

단어가있는 경우 해당 단어를 확인하고 UITextView.text에서 # 앞에 접두사를 추가하여 단어를 수정해야합니다. 이미 해시가 두 개있는 경우가 아니면 해시가 제거됩니다. 논리에 정규 표현식을 사용하고 있습니다.

나는 도청 문자의 단어를 결정하는 높은 수준의 방법을 찾을 수 없었습니다. 저는 Apple Dev를 검색했습니다. Lib. raywenderlich 및 Grok Swift와 같은 사이트가 있지만 반드시 있어야 할 방법을 찾을 수 없습니다.

현재 charcter가 유효한 단어 구분 기호인지 확인한 다음 문자 색인을 감소시키고 단어 경계가 결정될 때까지 테스트하여 구현할 수 있습니다. 어떤 시점에서 이전 색인으로 돌아가서 # 문자를 테스트합니다. # 인 경우 다음 문자를 테스트하고 # 문자가 아닌 경우 # 문자를 시작 문자에 추가합니다. 단어의.

UIKit, TextKit 또는 UITextView 또는 NSTextStorage의 메서드 내에 해당 단어의 NSRange 및 탭 한 문자의 단어를 반환하는 함수가 있습니까? 또한 TextView의 텍스트에 #을 추가하는 올바른 방법은 무엇입니까? [텍스트 뷰 : shouldChangeTextInRange : replacementText 또는 textView.textStorage : replaceCharactersInRange : withString :]

내가 PC, 플레이 스테이션과 게임 보이에 상업적으로 일했다, 그러나 이것은 그래서 응용 프로그램을 개발하고 아이폰/맥 플랫폼을 사용하여 처음이다 나는 정말로 조언을 사용할 수있다.

답변

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

에 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  
     } 

내부의 코드를 호출 할 필요가 탭 상태 인식기 기능 내의 문자보기에서 탭 문자 감지