3

テキストが通常は右揃えですが、編集時に左揃えに切り替わる UITextField のインスタンスを使用します。setTextAlignment:これは、editingDidBeginイベントを呼び出すことによって行われます。iOS 6 へのアップデート以降、これは奇妙な動作をします。テキストの配置は右から左に正しく変更されますが、何らかの入力が実行されるまで、カーソルはテキスト フィールドの右端に留まります。

配置が変更されたときにカーソルも移動するように、予想される動作を復元する方法を知っている人はいますか?

コンテキストを示すために: テキスト フィールドを使用して、単位付きの値を表示します。単位は編集中に削除され、ユーザーが Enter キーを押すと再び表示されます。

イベント editDidBegin で呼び出されるメソッド:

- (IBAction)textEditingDidBegin:(UITextField *)sender
{
    [sender setTextAlignment:NSTextAlignmentLeft];
    [sender setText:[NSString stringWithFormat:@"%.0f", width]];
}

イベント editDidEnd で呼び出されるメソッド:

- (IBAction)textEditingDidEnd:(id)sender
{
    [sender setTextAlignment:UITextAlignmentRight];
    [sender setText:[NSString stringWithFormat:@"%.0f m", width]];
}
4

2 に答える 2

2
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    textField.textAlignment = NSTextAlignmentLeft ;
    return YES ;
}

編集を開始する前に、textAlignment を変更してください。これを行うのに最適な場所は、UITextFieldDelegate メソッドtextFieldShouldBeginEditingです。

于 2012-12-17T14:35:00.320 に答える