带有可选/可复制文本的UITableViewCell,它还可以检测iPhone上的URL

时间:2010-03-25 11:17:12

标签: iphone uitableview hyperlink copy-paste textselection

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

我已经看到了一些解决这些问题之一的解决方案,但不是两者都解决了。

解决方案1:Icon Factory's IFTweetLabel

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

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

还有一个问题,如果一个URL足够长,可以包装,那么该类覆盖在URL上方以使其成为交互式的按钮无法包装和绘制屏幕,​​看起来非常奇怪。

解决方案2:使用IFTweetLabel并手动处理复制

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

解决方案3:UITextView

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

唯一没有解决的问题是我无法处理检测到的URL。文本视图使用UIApplication的{​​{1}}方法退出我的应用并启动了Safari。

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

所以我向所有知识渊博的人提出的问题是:我能做些什么?

UITextView是最佳选择吗?除了性能拖累,我认为webview会解决上述所有问题,如果我没记错,早在2.0天内,Apple文档实际上就推荐了需要文本格式/超链接的Web视图。

有没有人能想出一种方法来实现这一目标而不会造成性能拖累?

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

2 个答案:

答案 0 :(得分:1)

当我点击提交按钮时,一个新想法就打击了我。

我非常专注于使用文本和交互式内联网,我没有考虑到这可能不是最好的解决方案。

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

然而,更好的用户体验/互动可能是不突出内联网址,而是在幕后将它们聚集到一个数组中,并将显示按钮显示为单元格的附件视图?

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

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

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

答案 1 :(得分:0)

您可以通过覆盖UITextField Delegate方法来阻止编辑文本字段,使其不应用任何编辑。这使得该字段可选择并且可复制但是可以防止更改。

更好的问题是:您实际上是否必须显示实际的URL本身?你可以只使用一个页面/位置名称,只是server.host.domain前缀或url的其他一些浓缩表示?我认为没有人试图在移动设备的限制屏幕上阅读长网址。

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