我在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之前应用相同的逻辑,就像在编辑模式下一样,但它仍然自动左对齐:(
实际输出问题
textField.text = @"my Test";
设置XIB
答案 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对话设置在其内部的右侧。
快乐的编码!