Wie in der akzeptierte Antwort erwähnt, ist die selectedRange
Eigenschaft ist das, was Sie brauchen, aber passen Sie auf, wenn Sie die -textViewDidBeginEditing:
Delegatmethode verwenden Sie können eine Laufschleife verschieben müssen den Benutzer erzeugt „, um zu gewinnen aus Einführabschnittes "Aktion:
- (void)textViewDidBeginEditing:(UITextView *)textView
{
// Look for the default message and highlight it if present
NSRange defaultMsgRange = [textView.text rangeOfString:NSLocalizedString(@"TEXTFIELD_DEFAULT_MESSAGE", nil) options:NSAnchoredSearch];
BOOL isDefaultMsg = !(defaultMsgRange.location == NSNotFound && defaultMsgRange.length == 0);
if (isDefaultMsg) {
// Need to delay this by one run loop otherwise the insertion wins
[self performBlock:^(id sender) { // (BlocksKit - use GCD otherwise)
textView.selectedRange = defaultMsgRange;
} afterDelay:0.0];
}
}
Können Sie den Code, wo Sie versucht haben,' selectedRange' zu verwenden? Das klingt nach dem richtigen Ansatz. Es ist möglich, dass Sie ihm einen ungültigen Bereich oder etwas geben. –
Ich habe das gleiche Problem. Ich bin in der Lage, den richtigen Bereich für den Text zu erhalten, den ich auswählen möchte (der UITextView scrollt an die richtige Position), aber es gibt keine "Hervorhebung" des Textes im Bereich noch einen Einfügepunkt. Ich frage mich, ob ich eine Nachricht an die UITextView zu "aktivieren" oder etwas zuerst senden müssen? – jasongullickson