我尝试通过实施UITextFieldDelegate
方法
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location == 0 && [string isEqualToString:@" "]) {
return NO;
}
return YES;
}
但这有点乱,我不能为第一个角色输入空间。
有没有更好的解决方案来解决这个问题? 为什么会发生此错误?
答案 0 :(得分: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协议方法,所以在你的例子中,上面的方法将在[textField setDelegate:self]指定的viewcontroller中。
如果你想要恢复常规空间,你显然还需要记住通过替换@" \ u00a0"的出现来重新转换文本。与@" "从字段中取出字符串时
参考: Right aligned UITextField spacebar does not advance cursor in iOS 7