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 中自动滚动 UITextViewscrollEnabled 设置为 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?

UITextView 数据变化迅速

UITextView contentInset 在 iOS 7 上的 UITextView 中不起作用?

UITextView 设置属性后做啥?