3

我使用它来将文本字段集中在相关内容上:

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

这看起来很棒,很好,并且以对象为中心,准备好接受文本。我希望以某种方式格式化文本,因此在编辑更改处理程序中,我修改了文本并设置为新文本:

[textField setText:newText];

当我这样做时,文本字段将从居中之前跳转到其旧位置。我希望文本字段保持在对象的中心。

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

4

2 回答 2

2

要在编辑时格式化 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 居中对齐。当它在开始、中心或任何地方检测到“4”时,它将用“Hi”替换它,同时保持它的中心对齐行为。

于 2012-12-17T16:54:17.250 回答
0

除了上面的代码,使用以下代码替换现有文本:

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];

可怕的解决方案应该是一件容易的事!

于 2012-12-18T03:03:08.450 回答