我使用它来将文本字段置于相关内容的中心位置:
[textField setCenter:[someObject center]];
[textField becomeFirstResponder];
这看起来很棒,漂亮并且以对象为中心,准备接受文本。我希望文本格式化,所以在编辑更改的处理程序中,我修改文本并设置为新文本:
[textField setText:newText];
当我这样做时,文本字段将从它居中之前跳转到旧位置。我希望文本字段在对象上保持居中。
我的经验是,有可能有更好的方法来做到这一点,即移动文本字段并动态更改其内容,而不必解决各种怪癖。有什么建议吗?
答案 0 :(得分: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”替换它,同时保持它的中心对齐行为。
答案 1 :(得分:1)
除上述代码外,还使用以下内容替换现有文本:
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];
可怕的解决方案应该是一项简单的任务!