Начать редактирование UITextView в выбранном пользователем месте

У меня есть UITextView, который позволяет редактировать RichTextEdit. Я хочу, чтобы всякий раз, когда пользователь нажимает на определенное место текста, курсор перемещался туда, и редактирование должно начинаться с этого места.

Проблема: происходит следующее: когда я перетаскиваю курсор в любое место по своему выбору и пишу что-то, курсор сразу перемещается в конец текста UITextView и начинает писать. Я хочу, чтобы редактирование начиналось с местоположения, на которое нажал пользователь, или местоположения курсора.

Ниже приведены функции, которые я использую.

-(void) textViewDidBeginEditing{
    //Can set the cursor or selected Range of textView here or tap gesture recognizer required?
    return true;
}
-(void) textViewDidEndEditing{
    return true;
}
-(void) textViewDidChangeTextInRange:(UITextView *) textView range:(NSMakeRange) range replacementText: (NSString *) text{
    //Sets attributed text of my TextView based on my input AccessoryView
    if(textView.text.lenght > range.location){
        //This is my point of concern where I want to start the editing
    }
    return false;
}

Извините за ошибки в коде. Сейчас у меня нет доступа к моему коду ObjectiveC. Это было написано, чтобы дать вам представление о том, что я делаю. Я нашел это, но не смог заставить его работать. Я использую UITextView, он использует поле. как переместить курсор в UITextField после установки его значения

Пожалуйста, направь меня.


person Sahar    schedule 27.10.2014    source источник


Ответы (1)


Есть какая-то проблема с функциями Apple. Я добавил ссылку на код здесь как перемещать курсор в UITextField после установки его значения в моей функции

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    //code from stackoverflow question
}

но это не сработало. Затем я добавил тот же код в другую функцию и назвал ее селектором из shouldChangeTextInRange, и это сработало!!!

Рабочий код:

- (void)setCursorToCorrectPosition
{
    //code from stackoverflow question
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    [self performSelector:@selector(setCursorToCorrectPosition) withObject:nil afterDelay:0.01];
}
person Sahar    schedule 28.10.2014