2010-04-14 16 views
5

Chcę wybrać Tekst na UITextView, podobny do domyślnych opcji "Wybierz" i "Wybierz wszystko", które widzimy po stuknięciu. Chcę użytkownikowi możliwość zrobienia tego z mojego własnego menu. Grałem z selectedRange, ale to nie działa. Jakieś pomysły?Czy mogę programowo zaznaczać tekst w UITextView?

Dzięki

+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. –

+0

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

Odpowiedz

5

Obiekt selectedRange powinien zrobić, ale, jak wspomniano w documentation tylko w iPhone OS 3.0 i nowszych. W wersji 2.2 i wcześniejszych właściwość selectedRange jest w rzeczywistości punktem wstawienia.

+1

Zauważ, że funkcja tworzenia 'NSRange' jest' NSMakeRange() 'nie' NSRangeMake() 'jak można się spodziewać. – devios1

4

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]; 
    } 
} 
Powiązane problemy