我尝试通过实现
UITextFieldDelegate
方法来解决这个问题
像这样:
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (range.location == 0 && [string isEqualToString:@" "]) {
return NO;
}
return YES;
}
但是有点乱,我不能为第一个字符输入空格。
是否有更好的解决方案来解决这个问题?
为什么会出现这个错误?
最佳答案
- (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 协议(protocol)方法,因此在您的示例中,上述方法将位于 [textField setDelegate:self] 指定的 View Controller 中。
如果您想要返回常规空格,显然还需要记住在从文本字段中获取字符串时将出现的 @"\u00a0"替换为 @""以将文本转换回来
引用: Right aligned UITextField spacebar does not advance cursor in iOS 7
关于ios - Rightalignment UITextfield 的光标在输入空格后向左移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243711/