2016-03-27 2 views
0
  1. нАлАдкА я мой UITextField быть NSTextAlignmentRight, и это курсор находится в правом конце, как обычно.
    enter image description hereкурсор Rightalignment UITextField идут влево после ввода пробела

  2. Когда я ввел пробел, курсор переместился в левый конец поля UITextfield.
    enter image description here

  3. Я пытаюсь решить эту проблему путем реализации UITextFieldDelegate метод

так:

#pragma mark - UITextFieldDelegate 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if (range.location == 0 && [string isEqualToString:@" "]) { 
    return NO; 
    } 
return YES; 
} 

Но это немного беспорядок, и я не могу входное пространство для первого символа.

Есть ли лучшее решение, чтобы исправить это?
Почему эта ошибка происходит?

ответ

2
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    // only when adding on the end of textfield && it's a space 
    if (range.location == textField.text.length && [string isEqualToString:@" "]) { 
     // ignore replacement string and add your own 
     textField.text = [textField.text stringByAppendingString:@"\u00a0"]; 
     return NO; 
    } 
    // for all other cases, proceed with replacement 
    return YES; 
} 

В случае, если это не ясно, TextField: shouldChangeCharactersInRange: replacementString: это метод протокола UITextFieldDelegate, поэтому в вашем примере выше метод был бы в ViewController, обозначенном [TextField setDelegate: само].

Если вы хотите, чтобы ваши регулярные пространства обратно, то, очевидно, также нужно помнить, чтобы преобразовать текст обратно заменяя вхождения @ «\ u00a0» с @»" при получении строки из текстового поля

Для Ref:Right aligned UITextField spacebar does not advance cursor in iOS 7