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 に答える