我的应用有一个UITextView
,带有一段很长的,不可编辑的,可滚动的文字。当用户旋转设备时,我注意到移动中的位置。因此,例如,假设设备处于纵向模式,并且左上角的单词是“Stackoverflow”,在旋转到横向之后,不再是左上角的单词,文本被一个或有时更多的行关闭。如果我旋转回肖像,它会转移得更多。每次只是一点点。
有没有办法保持旋转位置,所以用户总是看到相同的单词(或至少是该单词的行)?
编辑:我认为以下内容可行,但我不确定如何编写第一部分代码:
scrollRangeToVisible:
答案 0 :(得分:0)
每当旋转发生时,您可以尝试滚动到顶部。 但是,在UITextView顶部滚动并不是那么简单。
我建议看看这个帖子: How do I force a UITextView to scroll to the top every time I change the text?
答案 1 :(得分:0)
我会尝试类似下面的内容,并使用点和粒度来获得您可以使用的结果。问题是当textview调整大小时,单词将换行不同(即,左上角的大多数字形可以放置在视图的中心,左侧有新的字形)。
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
CGPoint topLeft = CGPointMake(1.0,1.0);
UITextPosition *topPosition = [self.textView closestPositionToPoint:topLeft];
UITextRange *topRange = [self.textView.tokenizer rangeEnclosingPosition:topPosition withGranularity:UITextGranularityWord inDirection:UITextLayoutDirectionRight];
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
}
} completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
[self.textView scrollToRange:topRange];
}];
}