Jak wspomniano w przyjętym odpowiedź, właściwość selectedRange
jest rzeczą, którą musisz, ale pamiętaj, że jeśli używasz metody -textViewDidBeginEditing:
delegata może trzeba odłożyć jedną pętlę uruchomić w celu wygrania nad użytkownika wygenerowanym „wstawiania "akcja:
- (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];
}
}
Czy możesz umieścić kod, w którym próbowałeś użyć' selectedRange'? To brzmi jak właściwe podejście; możliwe, że dajesz mu nieprawidłowy zasięg lub coś takiego. –
Mam ten sam problem. Jestem w stanie uzyskać prawidłowy zakres tekstu, który chcę zaznaczyć (UITextView przewija do właściwej pozycji), ale nie ma "podświetlenia" tekstu w zakresie ani punktu wstawienia. Zastanawiam się, czy muszę wysłać wiadomość do UITextView, aby "aktywować" lub coś najpierw? – jasongullickson