iOS 6:UITextField textAlignment不会更改光标位置

时间:2012-12-17 12:45:45

标签: ios6 uitextfield text-alignment

我使用UITextField的实例,其中文本通常与右边对齐,但在编辑时切换到左对齐。这是通过在setTextAlignment:事件上调用editingDidBegin来完成的。由于对iOS 6的更新,这种行为很奇怪:文本对齐从右向左正确更改,但光标保留在文本字段的最右侧,直到执行某些输入。

有人知道如何恢复预期的行为,以便在对齐更改时光标也会移动吗?

给出一些上下文:我使用文本字段来显示带有单位的值。在编辑过程中删除该单位,然后在用户点击进入后再次显示该单位。

在事件编辑上调用的方法DidBegin:

- (IBAction)textEditingDidBegin:(UITextField *)sender
{
    [sender setTextAlignment:NSTextAlignmentLeft];
    [sender setText:[NSString stringWithFormat:@"%.0f", width]];
}

调用事件编辑的方法DidEnd:

- (IBAction)textEditingDidEnd:(id)sender
{
    [sender setTextAlignment:UITextAlignmentRight];
    [sender setText:[NSString stringWithFormat:@"%.0f m", width]];
}

2 个答案:

答案 0 :(得分:3)

尝试将textView作为第一响应者重新签名,然后立即将其作为第一个响应者。

textView.textAlignment = NSTextAlignmentCenter;
[textView resignFirstResponder];
[textView becomeFirstResponder];

答案 1 :(得分:2)

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    textField.textAlignment = NSTextAlignmentLeft ;
    return YES ;
}

在编辑之前更改textAlignment 开始。我知道这样做的最佳位置是UITextFieldDelegate方法textFieldShouldBeginEditing