1

我有个问题。我的应用程序的一部分需要在表格中显示文本。文本需要可选择/可复制(但不可编辑),并且文本中的任何 URL 都需要突出显示,并且当点击时允许我获取该 URL 并打开我的嵌入式浏览器。

我见过一些解决方案可以解决其中一个问题,但不能同时解决这两个问题。

解决方案 1:Icon Factory 的 IFTweetLabel

我尝试的第一个解决方案是使用 IFTweetLabel 类,该类由 Icon Factory 实现并在 Twitterrific 中使用。

虽然此解决方案允许检测链接(或您可以使用正则表达式找到的任何内容)以根据具体情况进行处理,但它不允许选择和复制。

还有一个问题是,如果 URL 足够长以进行包装,则该类覆盖在 URL 上方以使其具有交互性的按钮无法包装并拉出屏幕,看起来很奇怪。

解决方案 2:使用 IFTweetLabel 并手动处理副本

我尝试的第二件事是保留 IFTweetLabel 以处理链接,但使用长按手势实现复制,就像 SMS 应用程序如何处理它一样。这只是关于工作,但它不允许任意选择文本,复制整个文本,或者根本不复制任何文本......非常黑白。

解决方案3:UITextView

我的第三次尝试是添加一个UITextView作为表格单元格的子视图。

唯一不能解决的问题是我无法处理检测到的 URL。文本视图使用UIApplication'openURL:方法退出我的应用程序并启动 Safari。

此外,由于 table view 可能会变得非常大,UITextView作为子视图添加的 s 数量会导致滚动整个表格时明显的性能拖累,尤其是在 iPhone 3G 时代的设备上(因为每当滚动一个单元格时都会创建、布局、合成屏幕等)。

所以我对所有有知识的人的问题是:我能做什么?

UIWebView是最好的选择吗?除了性能拖累之外,我认为 webview 可以解决上述所有问题,如果我没记错的话,早在 2.0 天,Apple 文档实际上推荐了需要文本格式/超链接的 web 视图。

任何人都可以想出一种方法来实现这一目标而不会拖累性能吗?

非常感谢所有可以提供帮助的人。

4

2 回答 2

1

当我点击提交按钮时,一个新的想法突然出现了。

我非常专注于将 URL 嵌入文本和交互中,以至于我认为这可能不是最好的解决方案。

我确信要实现这种行为UIWebView,无论性能问题如何, a 都是最佳选择。

但是,也许更好的用户体验/交互不是突出显示内联的 URL,而是在幕后将它们收集到一个数组中,并呈现一个公开按钮作为单元格的附件视图?

然后对于选择和复制文本,我可以在UITextView关闭数据检测器的情况下使用,而不用担心链接被发送到 safari 并关闭我的应用程序。

当点击披露按钮时,用户可能会被带到文本中找到的 URL,或者如果找到多个 URL,则向用户显示一个选择器视图以选择要转到哪个。

欢迎对这个想法提出任何想法/批评。

于 2010-03-25T11:27:00.390 回答
0

您可以通过覆盖 UITextField Delegate 方法来防止编辑文本字段,这样它们就不会应用任何编辑。这使得该字段可选择和可复制,但防止更改。

一个更好的问题是:你真的必须显示实际的 URL 本身吗?您可以仅使用页面/位置名称、server.host.domain 前缀或其他一些 url 的压缩表示形式吗?我认为没有人会尝试在手机受限屏幕上阅读长网址。

如果您确实需要显示整个 url,那么我认为详细视图是要走的路。

于 2010-03-25T12:46:52.637 回答