gpt4 book ai didi

iphone - 带有语法高亮的 UITextView

转载 作者:IT老高 更新时间:2023-10-28 11:44:47 25 4
gpt4 key购买 nike

如何在 UITextView 中进行语法突出显示,特别是 Objective-C语法突出显示(和 检测) > 在 iPhone 上?

我对如何做到这一点的一些想法:

  • NSAttributedString。现在可在 iOS 3.2 及更高版本中使用。但是如何将 NSAttributedString 放入 UITextView?
  • UIWebView。当用户完成编辑并使用 CSS 样式表为文本着色时覆盖它。但是我如何在 UIWebView 中做到这一点,给它文本然后着色呢?

最佳答案

更新:自从 iOS 7 和 TextKit 以来,语法高亮变得非常容易。 Look no further than here (由我介绍)。


假设你想要一个可编辑的组件,那就没有太大希望了。简要概述一下,以确保我涵盖了所有内容:

  • UITextView :仅纯文本,没有(公共(public))方式。但可编辑。没有机会改变任何东西,没有机会获得几何等。在内部使用 web View 。每一段都是一个<div> ,由编辑引擎更改。您可以在那里更改 DOm,但这都是私有(private) API。全部私有(private),因此没有选择。
  • UIWebView : html,所以它可以设置样式,嵌入图像等。我猜(没有仔细研究)这就是前面提到的 3 20 UI 使用的。问题:无法编辑。没有(公开的)方法可以解决这个问题。如果没有私有(private) API,您将无法获得选择、访问 DOM 等,而且会很头疼。编辑就像在 UITextView 中一样工作,但需要一个全新的头痛级别。仍然:私有(private)。
  • CoreText框架:从 iOS 3.2 开始,一个非常非常好的渲染引擎。但就是这样。可以直接布局渲染NSAttributesString s。但是,没有用户交互。没有文本选择,没有文本输入,没有拼写检查,没有替换,没有高亮,不不不不不。只是渲染。还需要做大量工作才能使其在带有长文本的旧设备上快速运行。
  • UITextInput协议(protocol):允许与键盘交互并获取文本输入。还具有基本的文本替换功能。问题:仅文本输入,记录不充分。没有文本选择等(见上文)。

所以我们到了。两个缺少中心功能的全功能组件和两个缺少缺失环节的部分解决方案。以下是我能想到的所有可行方法:

  • 让用户编辑 UITextView未设置样式并显示 UIWebView 中设置样式的内容.对于后者,您可以使用 Three20。
  • 构建 CoreText 之间缺失的链接和 UITextInput .这包括但不限于文本选择、突出显示、背景颜色、文本存储和管理、效率、拼写检查等。其中一些由系统框架提供,但仍需要大量集成。
  • 提交错误并等待一个不错的公共(public) API 出现(我个人的方法)。
  • 说服 Apple 再次允许私有(private) API 并搞砸 UItextView s DOM。

Omni Group 采用了第二种方法并创建了一个可编辑的 TextView 。您可以在 OmniUI 中找到它框架。然而,这种实现远非完美。 (至少是几个月前我最后一次检查的时候)。他们很努力,但在用户交互方面仍然未能达到苹果的完美。 Apple 肯定已经投入了至少几个人年的时间来只做与文本选择和编辑的 UI 交互。在家无事可做,甚至对于作为全能集团的公司来说也是如此。

这一切都有一个有趣的方面:​​iWork。 Apple 声称不会在其中使用任何私有(private) API。但是文本选择与操作系统中的非常相同。所以他们必须将框架源代码复制到应用程序中。非常诚实的做法;)

关于iphone - 带有语法高亮的 UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com