3

我使用 UITextField 的一个实例,其中文本通常向右对齐,但在编辑时切换到左对齐。这是通过调用事件来完成setTextAlignment:的。editingDidBegin自 iOS 6 更新以来,这表现得很奇怪:文本对齐方式从右到左正确更改,但光标仍停留在文本字段的最右侧,直到执行某些输入。

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

给出一些上下文:我使用文本字段来显示一个带有单位的值。该单元在编辑期间被删除,然后在用户按 Enter 后再次显示。

在事件 editingDidBegin 上调用的方法:

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

在事件 editingDidEnd 上调用的方法:

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

2 回答 2

3

尝试将 textView 辞去第一响应者,然后立即使其成为第一响应者。

textView.textAlignment = NSTextAlignmentCenter;
[textView resignFirstResponder];
[textView becomeFirstResponder];
于 2014-03-27T08:23:07.777 回答
2
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    textField.textAlignment = NSTextAlignmentLeft ;
    return YES ;
}

在编辑开始之前更改 textAlignment 。我知道的最好的地方是 UITextFieldDelegate 方法textFieldShouldBeginEditing

于 2012-12-17T14:35:00.320 回答