Get word from long tap in a word of UITextView

后端 未结 2 1475
故里飘歌
故里飘歌 2020-12-29 16:03

Now I already detect long tap in UITextView

    - (void)viewDidLoad
    {
         [super viewDidLoad];
         UILongPressGestureRecognizer *LongPressgest         


        
相关标签:
2条回答
  • 2020-12-29 16:32

    SWIFT 4

    A copy of @cayeric's answer written in swift for your convenience.

    func getWord(at position: CGPoint, in textView: UITextView) -> String?{
        var point = position
    
        //eliminate scroll offset
        point.y += textView.contentOffset.y
    
        //get location in text from textposition at point
        guard let tapPos = textView.closestPosition(to: point) else {
            return nil
        }
    
        //fetch the word at this position (or nil, if not available)
        guard let wordRange = textView.tokenizer.rangeEnclosingPosition(tapPos, with: .word, inDirection: UITextWritingDirection.rightToLeft.rawValue) else {
            return nil
        }
    
        return textView.text(in: wordRange)
    }
    
    0 讨论(0)
  • 2020-12-29 16:57

    This function will return the word at a given position in an UITextView.

    +(NSString*)getWordAtPosition:(CGPoint)pos inTextView:(UITextView*)_tv
    {
        //eliminate scroll offset
        pos.y += _tv.contentOffset.y;
    
        //get location in text from textposition at point
        UITextPosition *tapPos = [_tv closestPositionToPoint:pos];
    
        //fetch the word at this position (or nil, if not available)
        UITextRange * wr = [_tv.tokenizer rangeEnclosingPosition:tapPos withGranularity:UITextGranularityWord inDirection:UITextLayoutDirectionRight];
    
        return [_tv textInRange:wr];
    }
    
    0 讨论(0)
提交回复
热议问题