UITextView setContentOffset with scrollEnabled=NO 在 iOS7
Posted
技术标签:
【中文标题】UITextView setContentOffset with scrollEnabled=NO 在 iOS7【英文标题】:UITextView setContentOffset with scrollEnabled=NO in iOS7 【发布时间】:2013-09-16 10:15:26 【问题描述】:我的应用中有自动滚动功能。激活后,我的代码会禁用 textView 滚动并使用 CADisplayLink
更改 contentOffset。
在早期版本的 ios 中可以正常工作,但在第 7 版中文本会被裁剪。
虽然进一步发现,但我发现 contentSize
在我禁用 textView 滚动后的一段时间内被更改。看起来像是某种优化。但它不考虑contentOffset
。
重现此错误:
-
确保 textView 中的文本足够大,至少有两页大小。
在 ViewController 中将
_textView.scrollEnabled = NO;
放入 -viewDidLoad
在 ViewController 中添加:
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[_textView setContentOffset:CGPointMake(0, 400) animated:YES];
问题是:如何在 iOS7 中自动滚动 UITextView
而 scrollEnabled
设置为 NO
?
禁用滚动以停止可能的UITextView
插入符号位置更改时的内置自动滚动并禁止用户与控件交互。
【问题讨论】:
我觉得这是由于新的iOS7全屏布局设计。请参考我在***.com/questions/17074365/… 中的回答。这会很有帮助... @Nandha,感谢您的评论。是的,我知道新的 UIViewController 属性,并且也检查了它们。但结果是一样的。 【参考方案1】:如果您的文本在底部被裁剪,而 scrollEnabled 为 NO:
self.textContainerInset = UIEdgeInsetsMake(0.0f, 0.0f, -20.0f, 0.0f);
【讨论】:
这是正确的答案。另一个答案并非在所有情况下都保留边距。【参考方案2】:并不能完全解决问题,但作为一种变通方法,您可以允许启用滚动,但将 UserInteractionEnabled 设置为 NO。
[_textView setScrollEnabled:YES];
[_textView setUserInteractionEnabled:NO];
【讨论】:
现在这就是我要找的...5星给你兄弟 除了现在不能输入以上是关于UITextView setContentOffset with scrollEnabled=NO 在 iOS7的主要内容,如果未能解决你的问题,请参考以下文章
当 UITextView 的文本超出 1 行时展开 UITextView 和 UITableView
选择另一个 UITextView 时,如何阻止 UITextView 退出第一响应者/关闭键盘?
从 UIView 中的 UITextView 复制文本后,UITextView 更改为 UIWebDocumentView?