问题描述
这更多是关于如何实现它的问题,而不是具体的解决方案。我想要一个标签,允许按钮和文本字段内联并换行到下一行。一个例子是 iOS 快捷方式应用程序,您可以在其中键入与文本相同的块,并且文本字段沿同一行换行。这是一个文本字段,因为有一个插入符号。
从高层次来看,它可能看起来像这样:
每个视图都遵循该行并在需要时换行到下一个。
我最初考虑使用带有样式链接的 NSAttributedString,链接既可以充当按钮,也可以打开文本字段进行输入。我尝试了这个并得到了一些有用的东西,但它不像文本字段在文本中的iOS快捷方式应用程序。我也考虑过使用 textkit,但我还没有做到这一点,因为我不确定这是正确的方法。
感谢您提供任何想法或解决方案。
编辑
我想过另一种方法来实现这一点,但我也不知道它是否可行。这个想法是使用文本字段的集合视图。一些文本字段将共享相同的 LayoutManager,以便文本跨文本字段共享。我必须计算要创建多少个文本字段,以便它们沿着 collectionView 向下流动
在图像中,Label 1
由 1 个已禁用编辑的文本字段组成。 TextField 1
由 3 个启用了编辑的文本字段组成,三个文本字段将共享相同的 LayoutManager。 Label 2
由 2 个带有共享布局管理器的文本字段组成,但无法编辑。
使用这种方法意味着计算要为每个“块”(标签或文本字段)创建的文本字段数量,并在每次内容更改时进行更新。使用这种方法,我只考虑标签和文本字段,但可以在其他时间添加按钮。
我刚刚开始,但意识到共享布局管理器会禁用编辑,所以我不知道这是否可行。
谢谢
解决方法
这肯定不是一项微不足道的任务,我认为没有现成的解决方案。
使用 NSLayoutManager
可以计算文本每行/字符的框架,然后根据这些框架禁止触摸,并在可编辑文本下添加背景。
你必须使用UITextView
,因为你需要禁止用户选择部分文本,你可以使用类似willChangeSelectionFromCharacterRange:toCharacterRange:委托方法来做到这一点,并且你需要{{3 }} 也禁止删除不可编辑的文本。