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

时间:2016-05-26 09:50:13

标签: ios objective-c iphone uitextfield ios9

我在IMemoryCache中设置了UITextField。文字xib设置为Alignment。当应用程序运行时,我会看到right,其中textfield显示placeholder文本。当我开始输入时,它仍然与right aligned对齐。只要我将光标从right移动到其他某个UI组件,输入的文本就会获得textfield

编辑: 我在textField中编辑时在一个场景中部分解决了它。但是从具有相同问题的本地数据源直接分配文本。

编辑文字字段解决方案

left aligned

如果我说,仍然面临对齐问题

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

在将文本分配给textField之前应用相同的逻辑,就像在编辑模式下一样,但它仍然自动左对齐:(

实际输出问题

enter image description here

textField.text = @"my Test"; 设置XIB

enter image description here

3 个答案:

答案 0 :(得分:3)

我一直在使用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的现有默认行为。评论这对我有用。 所以在你的代码中也会出现类似的东西。 希望这会对你有所帮助:)。

答案 1 :(得分:0)

我的尝试与你的表现一样,并且工作正常。 我想你必须删除 textfield 并再次使用新标识。 然后清理并重建您的项目。

确保您没有以编程方式为 textfield 提供任何值或参数。

答案 2 :(得分:0)

您可以执行以下操作:
1-将textAligment设置为右侧 2-将UITextFieldDelegate添加到your.h 3- yourTextField.delegate = self
4-添加委托方法' willBeginEditing'并将文本字段对齐设置在其左侧 5-添加委托方法' didEndEditing'如果textfield.text是= @""并将textfield对话设置在其内部的右侧。

快乐的编码!