当文本被改变时,iOS UITextField改变位置

我用这个来把一个文本框放在相关的东西上:

[textField setCenter:[someObject center]]; [textField becomeFirstResponder]; 

这看起来不错,很好,集中在对象,准备接受文字。 我希望文本以某种方式合成,所以在编辑改变的处理程序中,我修改文本并设置为新文本:

 [textField setText:newText]; 

当我这样做的时候,文本框会从中心位置前跳到原来的位置。 我想要文本字段留在对象的中心。

我的经验是,有可能有更好的方法来做到这一点,即移动文本字段,并dynamic地改变它的内容,而不必解决各种怪癖。 有什么build议?

在编辑时格式化UITextField,你可以尝试下面的代码。

 -(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if([string isEqualToString:@"4"]){ UITextRange *range=textField.selectedTextRange; [textField replaceRange:range withText:@"Hi"]; return NO; } return YES; } 

我已经保持UITextfield中心alignment。 当它在开始,中间或任何地方检测到“4”时,将以“Hi”代替它,同时保持其中心alignment行为。

除了上面的代码之外,还用下面的代码来replace现有的文本:

 UITextPosition *p0 = [textField beginningOfDocument]; UITextPosition *p1 = [textField positionFromPosition:p0 offset:[[textField text] length]]; UITextRange *complete = [textField textRangeFromPosition:p0 toPosition:p1]; [textField replaceRange:complete withText:newText]; 

可怕的解决scheme,应该是一件容易的事情!