iOS 5 SDK UITextView 限制/错误?

Posted

技术标签:

【中文标题】iOS 5 SDK UITextView 限制/错误?【英文标题】:iOS 5 SDK UITextView limitation / bug? 【发布时间】:2012-08-30 01:24:16 【问题描述】:

我有一个 UITextView,里面有很多文本。当显示包含 UITextView 的子视图时,UITextView 仅在 UITextView 被触摸和滚动后才会出现。

UITextView 中的文本数量是否有限制? 或者这是一个错误?

附件是解释这一事件的剪辑。

https://dl.dropbox.com/u/8256776/UITextView%20Bug.MOV

【问题讨论】:

如果UITextView 中有文本限制,您还没有达到它,因为我有一个包含更长文本的文本视图。你能说一下文本视图中的文本是如何设置的吗?以及如何添加文本视图等。 起初我将它从一个 word 文档粘贴到 Interface builder 并给出了这些结果。然后我尝试粘贴文本并将其设置为 NSString 并将 UITextView.text 设置为 viewDidLoad 中的 NSString 但它给出了相同的结果。 如果没有任何代码 sn-ps 或任何对如何添加视图等的了解,很难尝试找出问题所在。 我在界面构建器中使用 UITextView 完成了所有操作。我将 UITextView 放置到子视图中,然后只是将 word 文档中的文本粘贴到 UITextView....大小为 11 或更大,文本在被触摸之前不可见。 本文档中的文字是粘贴到 UITextView 中的文字dl.dropbox.com/u/8256776/Disclaimer_General.doc 【参考方案1】:

好的,我已经调查过了,这似乎是一个很常见的问题。看来文本视图不觉得它必须绘制文本,但调用setNeedsDisplay 并没有帮助。我不知道是否有“真正的”解决方案,但您可以通过以编程方式滚动来强制它绘制文本:

disclaimerView.contentOffset = CGPointMake(0, 1);
disclaimerView.contentOffset = CGPointMake(0, 0);

您的代码中有一个不相关的东西:在您的switchView 方法中,您有两个动画,一个用于菜单视图,一个用于您正在滑动到位的视图。这是不必要的,因为您可以将两个 setFrame 调用放在同一个动画中:

MenuView = (UIView *)[self.view viewWithTag:100];
appView = (UIView *)[self.view viewWithTag:ViewInt];
[MenuView setFrame:CGRectMake(0, 0, 320, 480)];
[appView setFrame:CGRectMake(321, 0, 320, 480)];
[UIView beginAnimations:@"move buttons" context:nil];
[UIView setAnimationDuration:.5];
[MenuView setFrame:CGRectMake(-320, 0, 320, 480)];
[appView setFrame:CGRectMake(0, 0, 320, 480)];
disclaimerView.contentOffset = CGPointMake(0, 1);
disclaimerView.contentOffset = CGPointMake(0, 0);
[UIView commitAnimations];

还有一件事(然后我会退缩:)) 您似乎很喜欢使用标签来检索元素。虽然它确实有效,但它不是很容易理解。你没有那么多元素,所以我只需将它们中的每一个添加为 IBOutlet 并带有一个有意义的名称(就像你对 disclaimerView 所做的那样)。此外,为您要移动到位的不同视图设置单独的switchView 方法。这样您就可以轻松地执行该视图可能需要的其他操作,例如 disclaimerView 上的强制滚动。

【讨论】:

感谢所有有用的提示。我不知道你可以在同一个块中设置多个动画。我使用标签的原因是,我想不出一种优雅的方式来从一个按钮调用子视图而不命名所有子视图。所有很棒的信息,非常感谢。 有趣的是,你应该说“块”,因为它实际上提醒我,从 ios 4.0 开始,推荐的动画制作方式实际上是使用块,例如使用方法 animateWithDuration:animations:。不鼓励使用beginAnimations/commitAnimations,尽管我不认为它们已被弃用。

以上是关于iOS 5 SDK UITextView 限制/错误?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 5 - 有没有办法在 UITextView 中禁用自动填充但保留拼写检查(红色下划线)?

如何在ios中限制UITextView中的内容

获取 iphone sdk 中 uitextview 数组中的所有超链接?

限制 uitextview 中的字符数 - 我在同一页面有 5 个文本视图

Swift 4 或 Swift 5 中的 UITextView 用户输入文本验证:限制 Swift 中的特定字符

UITextView - 在 XCode 5 上设置字体不适用于 iOS 6