我使用UITextField的一个实例,其中文本通常向右对齐,但在编辑时切换到左对齐。这是通过在editingDidBegin
事件上调用setTextAlignment:
来完成的。自从更新到 iOS 6 以来,这表现得很奇怪:文本对齐方式从右到左正确更改,但光标仍保留在文本字段的最右侧,直到执行某些输入。
有谁知道如何恢复预期的行为,以便在对齐方式更改时光标也会移动?
为了提供一些上下文:我使用文本字段来显示带有单位的值。该单位在编辑过程中被删除,然后在用户按 Enter 键后再次显示。
事件编辑时调用的方法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]];
}
尝试将文本视图辞去为第一响应者,然后立即使其成为第一响应者。
textView.textAlignment = NSTextAlignmentCenter;
[textView resignFirstResponder];
[textView becomeFirstResponder];
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
textField.textAlignment = NSTextAlignmentLeft ;
return YES ;
}
在编辑开始之前更改文本对齐方式。我知道这样做的最好的地方是在UITextFieldDelegate方法textFieldShouldBeginEditing
。