Подтвердить что ты не робот

UITextField Right Alignment iOS 7

У меня проблема, когда Right Aligning UITextField на iOS7, когда пользователь вводит "Пробел", он не появится сразу. Если я набираю другой символ, появляются пробелы.

В iOS 6 это не происходит

http://www.blogosfera.co.uk/2013/10/ios-7-whitespace-not-visible-to-uitextfield-with-right-alignment/

Кто-нибудь знает, как это исправить?

4b9b3361

Ответ 1

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    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;
}

Чтобы удалить код из текста

self.txtFirstName.text = [self.txtFirstName.text stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "];

В этом ответе stackoverflow - Спрятанная вправо UITextField пробел не продвигает курсор в iOS 7

Ответ 2

Я не знаю, как это исправить, но у меня есть предложение, вы могли бы, в то же время, заменить все белые пробелы очень похожим символом юникода (например, U + 00A0), а затем переключить их обратно за другим набран символ?

Просто включите <UITextFieldDelegate> в свой .h, установите UITextField.delegate = self; в viewDidLoad

Затем выполните следующее:

 //!!!!!*****!*!*!!!*!*** Make SURE you set the delegate code before doing this (as mentioned in the original SO answer)

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([string isEqualToString:@" "]) {
        textField.text = [textField.text stringByReplacingCharactersInRange:range withString:@"\u00A0"];//U+00A0 is a unicode character that seems very similar to space but isn't treated as whitespace...
    } else {
        textField.text = [textField.text stringByReplacingOccurrencesOfString:@"\u00A0" withString:@" "];//switches our u+00A0 unicode character back to a white-space everytime a space is not typed.
    }
    return (![string isEqualToString:@" "]);//returns YES if it doesn't equal whitespace, else NO (because we did a manual replace)
}

* Заметьте, у меня еще не было возможности проверить это, так как я не рядом с xCodeProj. Дайте мне знать, как это работает:) Если кто-либо видит какие-либо ошибки, не стесняйтесь делать изменения O:) Спасибо всем!