首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对UITextField的first responder重新签名时更改NSParagraphStyle

对UITextField的first responder重新签名时更改NSParagraphStyle
EN

Stack Overflow用户
提问于 2013-11-26 20:46:54
回答 1查看 383关注 0票数 1

我在一个自定义的UITableViewCell中有一个UITextField,我想从头部而不是尾部截断它的文本。

我在awakeFromNib中设置换行模式

代码语言:javascript
复制
- (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;
}

当它被设置时,离开文本字段(辞去first responder)似乎会导致使用NSLineBreakByTruncatingTrail

变化发生在textFieldShouldEndEditing:textFieldDidEndEditing:之间:当我在两个方法中都设置断点时,第一个方法中的换行模式是NSLineBreakByTruncatingHead,而第二个方法中的换行模式是NSLineBreakByTruncatingTail

有没有一种方法可以设置换行模式并使其保持不变?

EN

回答 1

Stack Overflow用户

发布于 2014-07-30 00:05:56

我知道,这个问题并不新鲜,但我一直在努力解决这个问题,最后我发现它唯一有效的方法是(希望它能帮助其他正在努力解决这个问题的人)。

覆盖UITextFielddrawTextInRect方法,并在代码中的其他位置设置defaultTextAttributes (我在自定义UITextField子类的init方法中完成了此操作):

代码语言:javascript
复制
- (void) drawTextInRect : (CGRect) rect {
    [[self text] drawInRect: rect withAttributes: self.defaultTextAttributes];
}

..。在代码中的其他地方:

代码语言:javascript
复制
// get defaultTextAttributes of the TextField
NSMutableDictionary* textAttributes = [self.defaultTextAttributes mutableCopy];
// get default paragraph style from the defaultTextAttributes    
NSMutableParagraphStyle* paragraphStyle = [textAttributes[NSParagraphStyleAttributeName] mutableCopy];
// change the lineBreakMode as desired
paragraphStyle.lineBreakMode = NSLineBreakByTruncatingHead;
// put changed paragraphStyle into textAttributes    
[textAttributes setObject: paragraphStyle forKey: NSParagraphStyleAttributeName];
// set the defaultTextAttributes of the textField    
self.defaultTextAttributes = textAttributes;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20217505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档