iOS中UITextView的文本对齐方式

4

我有一个UITextView用于接收用户输入的数字。当用户将焦点放在UITextView上时,textview中的文本向上移动。我想把它水平居中。谁能帮忙?

进入图像描述


textView.textAlignment = NSTextAlignment.Center //swifttextView.textAlignment = NSTextAlignment.Center //Swift - Jamil
@jamil65able 这会使其水平居中。问题要求垂直居中。 - Steve Wilford
@jamil65able,这段代码不起作用。您可以从上面的图片中获取一些想法。 - Usman Javed
你提到了上方的文本视图? - Jamil
文本视图没有这样的属性,因此您必须通过巧妙的方法来实现。 - Jamil
显示剩余2条评论
1个回答

0

这是一个有点棘手的修复。您需要观察 UITextViewcontentSize 属性,然后像这样调整其 contentSizecontentOffset

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

- (void)observeValueForKeyPath:(NSString *)iKeyPath ofObject:(id)iObject change:(NSDictionary *)iChange context:(void *)iContext {
    UITextView *myTextView = (UITextView *)iObject;
    CGFloat topCorrect = (myTextView.bounds.size.height - [myTextView contentSize].height * [myTextView zoomScale]) / 2.0;
    topCorrect = (topCorrect < 0.0 ? 0.0 : topCorrect);
    myTextView.contentOffset = (CGPoint){.x = 0, .y = -topCorrect};
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接