我有一个包含显示静态文本的UITextview的应用。我使用UITextview来滚动文本,这比UILabel中显示的要长得多。出于某种原因,iOS 7下的UITextview中的文本在旋转后不会保持滚动到顶部。在iOS 6下运行时,这可以正常工作。
这可以通过创建一个UITextview项目来显示,该项目以故事板为中心,边距约为50.然后添加将UITextview固定到主视图边缘的约束。确保文本字段包含足够的文本以进行滚动:
现在运行应用程序,文本将正确定位在UITextview中,第一行显示在顶部。旋转后,文本将向下移动:
旋转回肖像后,文本仍然向下滚动几行。
如果你在iOS 6中运行它,所有这些都能很好地工作。我已经尝试过很多研究,并在viewWillLayoutSubviews中尝试了以下可能的解决方案,使文本保持原位:
[textView sizeToFit];
[textView layoutIfNeeded];
[textView setContentOffset:CGPointMake(0.0, 0.0)];
[textView scrollRectToVisible:CGRectMake(0.0, 0.0, 1.0, 1.0) animated:NO];
似乎没什么用。有谁知道如何保持文本的位置?
答案 0 :(得分:1)
试试这个:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[self.textView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
}
我在iOS 7.1上测试了这个。
答案 1 :(得分:1)
从委托视图控制器的viewDidLayoutSubviews通知方法调用UITextView的scrollRangeToVisible:消息。这将在旋转后以及第一次印象时调整范围。
-(void)viewDidLayoutSubviews {
[self scrollToTop];
}
-(void) scrollToTop {
[self.textView setScrollEnabled:NO];
[self.textView scrollRangeToVisible:NSMakeRange(0.0f, 0.0f)];
[self.textView setScrollEnabled:YES];
}
答案 2 :(得分:0)
-(void) viewDidLoad{
self.textView=[[UITextView alloc] init];
self.textView.translatesAutoresizingMaskIntoConstraints=NO;
[self.view addSubview:self.textView];
NSDictionary* views = @{@"textView": self.textView};
NSArray* vContrains=[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-50-[textView]-50-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:views];
NSArray* hContrains=[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-50-[textView]-50-|" options:NSLayoutFormatAlignAllLeft metrics:nil views:views];
[self.view addConstraints:vContrains];
[self.view addConstraints:hContrains];
}
-(void)viewWillLayoutSubviews{
[self.textView layoutIfNeeded];
[self.textView sizeToFit];
}
答案 3 :(得分:0)
在iOS 8上试过这个。
INSERT INTO appointment VALUES( 000000001, 123456789,
‘2008-09-27 09:12:47’, '22-JUN-1964’, 00001, 123000000);
^ ^ ^
答案 4 :(得分:0)
类似于上面的一些内容:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
self.textView.scrollRectToVisible(CGRect(x:0,y:0,width:1,height:1),animated: false)
self.textView.layoutIfNeeded()
self.textView.sizeToFit()
}