2012-10-14 6 views
12

Ich versuche, ein Wort von einem Tippen zu bekommen. Die folgende Funktion sender ist aus dem UIGesture auf dem UITextView, Satz.Erhalten Sie ein Wort vom Tippen in UITextView

- (IBAction)printWordSelected:(id)sender { 
    NSLog(@"Clicked"); 

    CGPoint pos = [sender locationInView:self.view]; 
    UITextView *_tv = sentence; 

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

    //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]; 

    NSLog(@"WORD: %@", [_tv textInRange:wr]); 
} 

Dies ist, was schon habe ich, aber er druckt das Wort aus als NULL

+8

Versuchen Sie, pos auf ** pos = [sender locationInView: _tv] ** zu ändern und entfernen Sie dann die Pos.y-Einstellung. – rmaddy

+0

oh du bist ein Genie! ich danke dir sehr!! – KBouldin9

+0

Bitte überprüfen Sie http://StackOverflow.com/questions/8811909/getting-the-word-touched-in-a-uilabel-uitextview/21577829#21577829 – TheTiger

Antwort

10

„Versuchen pos pos = Wechsel [Absender locationInView: _tv]. Und entfernen Sie die pos.y Einstellung - rmaddy "

+0

Dies funktioniert gut, es sei denn, die UITextview wird nicht gescrollt. Aber wenn wir die Textansicht scrollen, wird das korrekte Wort nicht gedruckt. –

Verwandte Themen