Перемещение курсора в UITextView - PullRequest
1 голос
/ 19 февраля 2012

Я пытаюсь переместить курсор, когда UITextView выбран (коснулся) для имитации вида UITextField placeholder.

Я бы хотел, чтобы курсор находился в начале первой строки,Моя проблема в том, что [someTextField setSelectedRange] не работает надежно.Когда я звоню в textView:shouldChangeTextInRange:replacementText:, он работает как надо.Но этот метод вызывается только тогда, когда пользователь начинает печатать.Я использую textViewDidBeginEditing: для перемещения курсора, когда UITextView становится первым респондентом:

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    if (textView == self.descriptionText) {
        CustomTextView* customTV = (CustomTextView *)textView;
        if ([customTV.text isEqualToString:customTV.placeholder]) {
            // text in text view is still the placeholder -> move cursor to the beginning
            customTV.text = customTV.placeholder;
            customTV.textColor = [UIColor lightGrayColor];
            customTV.selectedRange = NSMakeRange(0, 0);
        }
    }
}

Любые идеи, почему customTV.selectedRange = NSMakeRange(0, 0); не работает правильно в textViewDidBeginEditing:?

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 08 апреля 2013

На самом деле есть очень простой способ сделать это.

    // Count the characters on screen
    NSMutableString *numOfChar = [self.myTextField.text mutableCopy];

    // Skip that many characters to the left
    self.myTextField.selectedRange = NSMakeRange(self.myTextField.selectedRange.location-[numOfChar length], 0);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...