Ios UITextField对齐:占位符右对齐&;实际文本左对齐

Ios UITextField对齐:占位符右对齐&;实际文本左对齐,ios,objective-c,iphone,uitextfield,ios9,Ios,Objective C,Iphone,Uitextfield,Ios9,我在xib中设置了UITextField。文本对齐设置为右侧。当应用程序运行时,我会看到textfield,其中显示占位符,并且右对齐文本。当我开始键入时,它仍然与右侧对齐。当我将光标从textfield移动到某个其他UI组件时,键入的文本将左对齐 编辑: 我在textField中编辑时,在一个场景中部分解决了这个问题。但来自本地数据源的直接文本分配也有同样的问题 编辑文本字段解决方案 - (void)textFieldDidEndEditing:(UITextField *)textField

我在
xib
中设置了
UITextField
。文本
对齐
设置为
右侧
。当应用程序运行时,我会看到
textfield
,其中显示
占位符
,并且
右对齐
文本。当我开始键入时,它仍然与
右侧对齐。当我将光标从
textfield
移动到某个其他UI组件时,键入的文本将
左对齐

编辑: 我在textField中编辑时,在一个场景中部分解决了这个问题。但来自本地数据源的直接文本分配也有同样的问题

编辑文本字段解决方案

- (void)textFieldDidEndEditing:(UITextField *)textField{
   textField.text = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
如果我说,

textField.text = @"my Test";
在将文本指定给textField之前应用了与编辑模式相同的逻辑,但它仍然会自动左对齐:(

实际输出问题

XIB
设置
UITextField


我已经试过了,和你表演的一样,效果很好。 我认为您必须删除该文本字段,并使用新标识重新放置。 然后清理并重建项目


确保您没有以编程方式向文本字段提供任何值或参数。

我已经尝试了与您执行的相同的操作,并且工作正常。 我认为您必须删除该文本字段,并使用新标识重新放置。 然后清理并重建项目


确保您没有以编程方式向文本字段提供任何值或参数。

您可以执行以下操作:
1-将文本对齐设置为右侧
2-将UITextFieldDelegate添加到您的.h
3-yourTextField.delegate=self
4-添加委托方法“willBeginEditing”,并将文本字段aligment设置在其左侧
5-如果textfield.text=@,则添加委托方法“didEndEditing”,并将textfield aligment设置在其右侧


快乐编码!

您可以执行以下操作:
1-将文本对齐设置为右侧
2-将UITextFieldDelegate添加到您的.h
3-yourTextField.delegate=self
4-添加委托方法“willBeginEditing”,并将文本字段aligment设置在其左侧
5-如果textfield.text=@,则添加委托方法“didEndEditing”,并将textfield aligment设置在其右侧


快乐编码!

我一直在使用
UILabel
类别来进行垂直对齐调整。其中有一个方法
+(void)load
,在该方法中,我使用了以下行

method_exchangeImplementations(class_getInstanceMethod(self, @selector(textRectForBounds:limitedToNumberOfLines:)), class_getInstanceMethod(self, @selector(verticalAlignTextRectForBounds:limitedToNumberOfLines:)));
method_exchangeImplementations(class_getInstanceMethod(self, @selector(drawTextInRect:)), class_getInstanceMethod(self, @selector(verticalAlignDrawTextInRect:)));
这一特定的代码行给我造成了问题。它覆盖了
UITexfield
的现有默认行为。对此进行注释对我来说很有效。 所以在你的代码中也会有类似的东西。
希望这将对您有所帮助:)

我一直在使用
UILabel
类别类进行垂直对齐调整。其中有一个方法
+(void)load
,在该方法中,我使用了以下行

method_exchangeImplementations(class_getInstanceMethod(self, @selector(textRectForBounds:limitedToNumberOfLines:)), class_getInstanceMethod(self, @selector(verticalAlignTextRectForBounds:limitedToNumberOfLines:)));
method_exchangeImplementations(class_getInstanceMethod(self, @selector(drawTextInRect:)), class_getInstanceMethod(self, @selector(verticalAlignDrawTextInRect:)));
这几行代码给我带来了问题。它覆盖了
UITexfield
的现有默认行为。评论这件事对我很有用。 所以在你的代码中也会有类似的东西。
希望这能帮助您:)

为什么文本字段对齐方式和控件水平对齐方式不同?@Alok,即使我将控件对齐方式改为右侧,结果也没有变化。@Ameer幸运吗?我也面临同样的问题issue@Jeff设置文本时还没有运气。为什么文本字段对齐方式和控件水平对齐方式不同?@Alok,即使我将控件对齐方式改为右侧,结果也没有变化。@Ameer有运气吗?我也面临同样的问题issue@Jeff设置文本还没有成功。谢谢您的输入。我删除了文本字段并重新添加,但结果仍然相同。您提到“不要以编程方式给出任何值”有什么具体原因吗?谢谢您的输入。我删除了textfield并重新添加了它,但结果仍然相同。您提到“不要以编程方式给出任何值”有什么具体原因吗?它不起作用。我已经找到了部分解决方案。请参阅我更新文章的编辑部分。谢谢你的输入,Bashiri不起作用。我得到了部分解决方案。请参阅我更新文章的编辑部分。感谢您的输入,巴希尔在我的一个类别中使用了方法交换实现,评论它对我有效在我的一个类别中使用方法交换实现,评论它对我有效