У меня проблема, когда Right Aligning UITextField на iOS7, когда пользователь вводит "Пробел", он не появится сразу. Если я набираю другой символ, появляются пробелы.
В iOS 6 это не происходит
Кто-нибудь знает, как это исправить?
У меня проблема, когда Right Aligning UITextField на iOS7, когда пользователь вводит "Пробел", он не появится сразу. Если я набираю другой символ, появляются пробелы.
В iOS 6 это не происходит
Кто-нибудь знает, как это исправить?
-(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
Я не знаю, как это исправить, но у меня есть предложение, вы могли бы, в то же время, заменить все белые пробелы очень похожим символом юникода (например, 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:) Спасибо всем!