2012-02-19 4 views
1

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

Я хочу, чтобы курсор находился в начале первой строки. Моя проблема в том, что [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:?

Благодарим за помощь!

+0

Вы нашли решение на этом? – Legolas

ответ

2

На самом деле существует очень простой способ достижения этого.

// 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); 

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

Смежные вопросы