Могу ли я программно выделить текст в UITextView? - PullRequest
6 голосов
/ 14 апреля 2010

Я хочу выбрать текст в UITextView, аналогично стандартным опциям «Выбрать» и «Выбрать все», которые мы видим при нажатии. Я хочу, чтобы пользователь мог сделать это из моего меню. Я играл с selectedRange, но это, похоже, не сработало. Есть идеи?

Спасибо

Ответы [ 2 ]

6 голосов
/ 14 апреля 2010

Свойство selectedRange должно делать это, но, как указано в документации , только в iPhone OS 3.0 и более поздних версиях. В 2.2 и более ранних версиях свойство selectedRange фактически является точкой вставки.

4 голосов
/ 28 сентября 2013

Как уже упоминалось в принятом ответе, свойство selectedRange - это то, что вам нужно, но имейте в виду, что если вы используете метод делегата -textViewDidBeginEditing:, вам может потребоваться отложить один цикл выполнения, чтобы победить пользователя сгенерированное действие «вставка»:

- (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];
    }
}
...