UiTextView - 仅添加一行时的位置

时间:2013-01-18 22:25:40

标签: ios objective-c cocoa-touch cocoa

当我的UiTextView添加了两行或更多行时,它看起来不错,但当用户只输入一行时,文字会保留在UiTextView的中间。如何强制它留在UiTextView

的左上角

2 个答案:

答案 0 :(得分:1)

您可以查看此博客(iOS: Vertical aligning text in a UITextView),其中介绍了如何进行中心和底部垂直对齐。使用类似的逻辑并将contentOffset y param设置为零,以使其顶部对齐。

这是博客中的代码

- (void) viewDidLoad {
   [textField addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
   [super viewDidLoad];
}

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

   //Bottom vertical alignment
   CGFloat topCorrect = ([tv bounds].size.height - [tv contentSize].height);
    topCorrect = (topCorrect <0.0 ? 0.0 : topCorrect);
    tv.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}

答案 1 :(得分:1)

我刚刚发现了一个更简单的解决方案。下一个代码将只移动文本:[textView setContentInset:UIEdgeInsetsMake(5, 0, 5,0)]