Rightalignment UITextfield 的光标在输入 space 后向左移动
Rightalignment UITextfield's cursor go left after enter a space
我将我的 UITextfield 设置为 NSTextAlignmentRight
,它的光标正常位于右端。
当我输入 space 时,光标移动到 UITextfield 的左端。
我尝试通过实施 UITextFieldDelegate
方法
来解决这个问题
像这样:
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location == 0 && [string isEqualToString:@" "]) {
return NO;
}
return YES;
}
但是有点乱,第一个字输入不了space。
是否有更好的解决方案来解决这个问题?
为什么会出现这个错误?
- (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
我将我的 UITextfield 设置为
NSTextAlignmentRight
,它的光标正常位于右端。
当我输入 space 时,光标移动到 UITextfield 的左端。
我尝试通过实施
UITextFieldDelegate
方法 来解决这个问题
像这样:
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location == 0 && [string isEqualToString:@" "]) {
return NO;
}
return YES;
}
但是有点乱,第一个字输入不了space。
是否有更好的解决方案来解决这个问题?
为什么会出现这个错误?
- (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