2012-07-05 11 views
5

Ahora ya se detecta mucho toque en UITextViewObtener palabra de mucho toque en una palabra de UITextView

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     UILongPressGestureRecognizer *LongPressgesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressFrom:)];  
     [[self textview] addGestureRecognizer:LongPressgesture]; 
     longPressGestureRecognizer.delegate = self; 
    } 
    - (void) handleLongPressFrom: (UISwipeGestureRecognizer *)recognizer 
    { 
     CGPoint location = [recognizer locationInView:self.view]; 

     NSLog(@"Tap Gesture Coordinates: %.2f %.2f", location.x, location.y); 
    } 

Ahora, ¿Cómo debo hacer para obtener el contenido de la palabra que tiene una pulsación larga, y obtener un rect de ese palabra para prepararse para mostrar el PopOver?

+0

favor verifique http://stackoverflow.com/questions/8811909/getting-the-word-touched-in-a-uilabel-uitextview/21577829#21577829. He utilizado 'UITapGestureRecognizer' y puedo reemplazarlo por' UILongPressGestureRecognizer'. – TheTiger

Respuesta

15

Esta función devolverá la palabra en una posición determinada en una 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]; 
} 
+1

Es posible que desee verificar el método 'rangeEnclosingPosition: withGranularity: inDirection:' de la propiedad 'tokenizer' de la vista de texto. –

+0

Gracias robar, eso lo hace mucho más simple! He editado la respuesta para incluir tu sugerencia. – cayeric

+0

¿Hay alguna manera de hacer esto al revés, como obtener la posición de una palabra? – Sirens

Cuestiones relacionadas