如何在表格视图单元格中垂直对齐文本视图文本?

时间:2015-10-24 17:34:24

标签: ios objective-c uitextview

我尝试对齐UITextView的文本。我的文本视图位于单元格中。 Using this link by stackoverflow我试图调整文字。我在TableViewCell类中完成了它,如下所示,

- (void)awakeFromNib {
    [self.postedText addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    UITextView *txtview = object;
    CGFloat topoffset = ([txtview bounds].size.height - [txtview contentSize].height * [txtview zoomScale])/2.0;
    topoffset = ( topoffset < 0.0 ? 0.0 : topoffset );
    txtview.contentOffset = (CGPoint){.x = 0, .y = -topoffset};
}

当我运行此操作时,我收到以下错误。

  

observeValueForKeyPath:ofObject:change:context:收到消息但未处理。   关键路径:contentSize   观察对象:; layer =; contentOffset:{0,0}; contentSize:{256,204}&gt;   变化:{       kind = 1;       new =&#34; NSSize:{256,204}&#34 ;;   }   上下文:0x0&#39;   ***第一次抛出调用堆栈:   (0x1821a02d8 0x1939740e4 0x1821a0218 0x183075d44 0x182fc95c4 0x182fc90e4 0x182fb288c 0x187315944 0x186c8f024 0x186bdd760 0x186525e1c 0x186520884 0x186520728 0x18651febc 0x18651fc3c 0x186c63f90 0x186c63ef4 0x1821582a4 0x182155230 0x182155560 0x1820812d4 0x18b89f6fc 0x186c46fac 0x100060414 0x193ff2a08)   libc ++ abi.dylib:以NSException类型的未捕获异常终止

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您如何知道self会持续存在?我认为这是一个表格单元格;他们来去匆匆。在KVO中将表格单元格设置为观察者是非常危险的(正如您刚刚发现的那样)。

一般来说,这种方法不会成立,因为观察者需要在观察者的生命之外持续存在,并且需要在观察者不存在之前用观察者注销自己。你无法做到这两件事。