Я решить эту проблему путем наблюдения contentsize из UITextView, когда есть какие-либо изменения в contentSize, обновите contentOffset.
Добавить наблюдателя следующим образом:
[textview addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:NULL];
Handle действия наблюдателя следующим образом:
-(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};
}
Чтобы текст TextView по горизонтали в центре, выберите TextView из .xib класса и пойти в библиотеку и в этом наборе «Выравнивание» как центр.
Возможно влияние на точку ввода с использованием ограничений? – user1574429
Игнорировать мой комментарий – Andy