UITextView对齐方式正在发生变化

时间:2012-07-16 08:18:19

标签: iphone objective-c xcode uitextview right-to-left

我有一个UITextView与RTL对齐。

如果用户输入文字并取消键盘,则对齐仍为 - 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;
}

有人有什么想法吗?

3 个答案:

答案 0 :(得分:2)

最后我刚添加了一个带有占位符文字的标签。 显示键盘时,将隐藏占位符标签。 如果键盘被解除为空文本,则会再次显示占位符标签。 如果有更合适的解决方案,请不要犹豫,在此发布。

答案 1 :(得分:1)

而不是:

userTextView.text = ""

你应该把:

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

这是“启动RTL”的UTF-8字符

答案 2 :(得分: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;
}