在重新签名UITextField的第一个响应者时,NSParagraphStyle被更改

时间:2013-11-26 12:46:54

标签: ios objective-c uikit uitextfield nsattributedstring

我在自定义UITextField中有UITableViewCell,其文字我想从头部而不是尾部截断。

我在awakeFromNib中设置换行模式:

- (void)awakeFromNib
{
  [super awakeFromNib];

  NSMutableDictionary* textAttributes = [self.textField.defaultTextAttributes mutableCopy];
  NSMutableParagraphStyle* paragraphStyle = [self.textField.defaultTextAttributes[NSParagraphStyleAttributeName] mutableCopy];
  paragraphStyle.lineBreakMode = NSLineBreakByTruncatingHead;
  [textAttributes setObject:[UIColor redColor] forKey:NSForegroundColorAttributeName];
  [textAttributes setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
  self.textField.defaultTextAttributes = textAttributes;
}

设置完成后,离开文本字段(重新启动第一个响应者)似乎会导致NSLineBreakByTruncatingTrail被使用。

更改发生在textFieldShouldEndEditing:textFieldDidEndEditing:之间:当我在两种方法中设置断点时,第一行中的换行模式为NSLineBreakByTruncatingHead,但NSLineBreakByTruncatingTail为第二行

有没有办法可以设置换行模式并坚持下去?

1 个答案:

答案 0 :(得分:0)

我知道,这个问题并不新鲜,但是我几个小时以来一直在努力解决这个问题,而我发现它最终工作的唯一方法就是以下(希望它能帮助其他人解决这个问题)。

覆盖drawTextInRect的{​​{1}}方法并在代码中的其他位置设置UITextField(我在自定义defaultTextAttributes子类中的init方法中执行了此操作:

UITextField

......以及代码中的其他地方:

- (void) drawTextInRect : (CGRect) rect {
    [[self text] drawInRect: rect withAttributes: self.defaultTextAttributes];
}