右对齐UITextfield的光标在输入空格后向左移动

时间:2016-03-27 04:07:12

标签: ios objective-c uitextfield text-alignment

  1. 我将我的UITextfield设置为NSTextAlignmentRight,它的光标正常位于右端。
    enter image description here

  2. 当我进入空格时,光标移到UITextfield的左端 enter image description here

  3. 我尝试通过实施UITextFieldDelegate方法

  4. 解决此问题 像这样:

    #pragma mark - UITextFieldDelegate
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
      if (range.location == 0 && [string isEqualToString:@" "]) {
        return NO;
      }
    return YES;
    }
    

    但这有点乱,我不能为第一个角色输入空间。

    有没有更好的解决方案来解决这个问题? 为什么会发生此错误?

1 个答案:

答案 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