【问题标题】:UITableViewCell with selectable/copyable text that also detects URLs on the iPhone带有可选/可复制文本的 UITableViewCell 还可以检测 iPhone 上的 URL
【发布时间】:2011-01-31 16:16:42
【问题描述】:

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

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

解决方案 1:Icon Factory's IFTweetLabel

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

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

还有一个问题,如果 URL 足够长可以被包裹,类覆盖在 URL 上方以使其交互的按钮无法包裹并绘制到屏幕外,看起来很奇怪。

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

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

解决方案 3:UITextView

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

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

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

所以我想问所有知识渊博的人:我能做什么?

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

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

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

【问题讨论】:

标签: iphone uitableview hyperlink copy-paste textselection


【解决方案1】:

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

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

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

【讨论】:

  • 我可能应该提到 UI 是一个聊天视图。消息将显示在表格视图中,如果其中一位用户在聊天中键入或粘贴 URL,则应该可以访问它。我不想更改 URL 的编写或粘贴方式,因为有人可能会围绕该 URL 发送消息 - 例如:“嘿,查看此页面:link”等。跨度>
  • 我尝试了类似的显示网址,但事情很快就变得毛茸茸了。除非您谈论 TinyUrls 之类的东西,否则它们很快就会变得难以阅读,并且它们使界面看起来像废话。即使是聊天,我也会推荐在主视图中仅使用截断或符号表示的详细视图。
【解决方案2】:

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

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

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

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

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

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

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

【讨论】:

  • 您是否正在考虑在每个单元格内使用 UIWebView(我之前尝试过,效果不佳)或者只是 UIWebView 而不是完全使用 tableview(有兴趣了解它是如何工作的,我想最终尝试)?
  • 我在想每个单元格中都有一个UIWebView。你遇到了什么问题?只是表现不合格吗?
  • @bpapa,具有讽刺意味的是,您对表格单元格内 UIWebViews 的问题的答案之一来自我.... ;)
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多