Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 内联按钮和/或字符串中的文本字段,使用Swift包装与文本相同的内容_Ios_Swift_Uitextfield_Nsattributedstring_Textkit - Fatal编程技术网

Ios 内联按钮和/或字符串中的文本字段,使用Swift包装与文本相同的内容

Ios 内联按钮和/或字符串中的文本字段,使用Swift包装与文本相同的内容,ios,swift,uitextfield,nsattributedstring,textkit,Ios,Swift,Uitextfield,Nsattributedstring,Textkit,这更多的是一个如何着手实现的问题,而不是一个具体的解决方案。我想有一个标签,允许按钮和文本字段内联和包装到下一行。例如iOS快捷方式应用程序,您可以在其中键入与文本相同的块,并且文本字段沿同一行换行。这是一个文本字段,因为有插入符号 从高层次来看,它可能是这样的: 其中,每个视图都沿着直线,并在需要时换行到下一个视图 我最初考虑将NSAttributedString与已设置样式的链接一起使用,该链接可以用作按钮,也可以打开文本字段进行输入。我尝试了这个,得到了一些有用的东西,但它不像iOS

这更多的是一个如何着手实现的问题,而不是一个具体的解决方案。我想有一个标签,允许按钮和文本字段内联和包装到下一行。例如iOS快捷方式应用程序,您可以在其中键入与文本相同的块,并且文本字段沿同一行换行。这是一个文本字段,因为有插入符号

从高层次来看,它可能是这样的:

其中,每个视图都沿着直线,并在需要时换行到下一个视图


我最初考虑将NSAttributedString与已设置样式的链接一起使用,该链接可以用作按钮,也可以打开文本字段进行输入。我尝试了这个,得到了一些有用的东西,但它不像iOS快捷方式应用程序中的文本字段在文本中。我也考虑过使用textkit,但我还没有做到这一点,因为我不确定这是正确的方法

感谢您提出的任何想法或解决方案

编辑 我已经考虑过另一种方法来实现这一点,但我不知道它是否也会起作用。想法是使用文本字段的collectionView。某些文本字段将共享同一LayoutManager,以便文本在文本字段之间共享。我必须计算要创建多少文本字段,以便它们沿着collectionView向下流动

在图像中,
标签1
由1个禁用编辑的文本字段组成
TextField 1
由3个启用编辑功能的文本字段组成,这三个文本字段将共享同一个LayoutManager<代码>标签2由两个文本字段组成,带有共享布局管理器,但编辑被禁用

使用这种方法意味着计算每个“块”(标签或文本字段)要创建多少文本字段,并在每次内容更改时更新。使用这种方法,我只考虑标签和文本字段,但按钮可以在其他时间添加

我刚开始做这个,但意识到共享版面管理器会禁用编辑,所以我不知道这是否可能


谢谢

这肯定是一项非常重要的任务,我认为没有现成的解决方案

使用
NSLayoutManager
可以计算文本中每行/字符的帧,然后根据这些帧禁止触摸,并在可编辑文本下添加背景


您必须使用
UITextView
,因为您需要禁止用户选择部分文本,您可以使用类似委托方法的方法来完成,并且ofc您也需要禁止删除不可编辑的文本

“我尝试了这个,得到了一些有用的东西,但它与iOS快捷方式应用程序不同,其中文本字段位于文本中。“到底有什么区别呢?@Larme,区别在于我使用了一个属性字符串,所以尽管我将其样式与快捷方式应用程序中的样式相同,并将其设置为链接,但它与文本字段不同,它只能在该区域中像快捷方式应用程序中那样进行编辑。谢谢您的回复!