3

私はUITextViewRTLアライメントを持っています。

ユーザーがテキストを入力してキーボードを閉じると、配置はそのままになります--RTL。

しかし、ユーザーが空の文字列を選択した場合、文字列をプレースホルダーに変更すると、配置が反転してLTRになります。

明示的にRTLを要求しようとしましたが、役に立ちませんでした。

-(void)cancelPad{
    [userTextView resignFirstResponder];
    userTextView.textAlignment = UITextAlignmentRight;
    userTextView.text = @"place holder text";
}

-(void)doneWithNumberPad{
    if ([userTextView.text isEqualToString:@""]) {
        [self cancelPad];
    }
    [userTextView resignFirstResponder];
    userTextView.textAlignment = UITextAlignmentRight;
}

誰かアイデアがありますか?

4

3 に答える 3

1

最終的に、プレースホルダー テキストを含むラベルを追加しました。キーボードが表示されると、placeholderLabel は非表示になります。空のテキストでキーボードを閉じると、placeholderLabel が再び表示されます。より適切な解決策がある場合は、遠慮なくここに投稿してください。

于 2012-07-17T08:28:57.283 に答える
1

それ以外の:

userTextView.text = ""

あなたが置くべきです:

userTextView.text = [NSString stringWithFormat:@"\u202b"];

これは、「RTL を開始する」ための UTF-8 文字です。

于 2012-10-31T12:43:30.413 に答える
0

最初: .h ファイルにこれを追加します

UIViewController<UITextFieldDelegate>

これにテキストフィールドを割り当てます

userTextView.delegate =self;

次に、このメソッドを使用してコードを入れます

-(BOOL) textFieldShouldBeginEditing:(UITextField *)textField{


 }     
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{

}
-(BOOL) textFieldShouldReturn:(UITextField *)textField{

}

例 :

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{

if ([userTextView.text isEqualToString:@""]) {
    [self cancelPad];
}
[userTextView resignFirstResponder];
userTextView.textAlignment = UITextAlignmentRight;
}
于 2012-07-16T09:37:38.857 に答える