- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试实现与 Facebook 的帖子编辑器相同的功能,您可以在其中 @tag 人。我能够使用 NSMutableAttributedString 和 NSRegularExpression 轻松实现着色。
用户发布文本后,我需要发送更多信息。用户可以从自动提示弹出窗口中选择人(已经实现,获取用户的姓名和数据)。只要我想保留@people 格式,一切都正常,但我做不到。我遇到的问题是我想向用户显示@someone,但我需要在后台保留更多信息,例如此人的 userId 以便稍后将其传递给后端。
看看 Facebook 是怎么做到的——他们甚至不使用 @ 符号,他们只是为名字添加一些背景颜色。
例如:
Here I tag @myfriend and something else
这应该会导致信息@tag 从 10 开始,长度为 9,userId=100,所以我可以给它上色并传递给后端关于用户选择了谁的信息。我还想拥有的一些附加功能是当用户从标签中删除一个字母时删除整个标签。
我有点纠结于什么是最好的方法。
想法 1:保留 2 个 NSString,一个具有标记格式的链接,其中包含存在于后台的所有数据,第二个经过修饰以显示给用户。
问题:在用户编辑时管理 2 个 NSString 真的很痛苦,所有的 NSRanges 对他们来说都是不同的,例如从文本中删除标签会很困难。我试图让两者保持同步,但遇到了很多问题并放弃了。
想法 2: 当用户选择带有偏移量、长度的人到@tag 时,保留对标签的引用的 NSArray,并显示用户生成的 NSFormattedString,它来自于没有任何特殊标记的源文本的组合,这信息。
问题:当用户编辑文本时,范围可能会改变,例如,如果用户在我的例子中删除或添加一些字母到我的@myfriend 之前,我将不得不更新所有标签的偏移量,这可能会导致一些问题。如果用户选择一个文本范围并将其删除,则更复杂的情况是,偏移量必须更新超过 1。
这两个听起来都过于复杂,我知道问题并不容易,但也许有人对此类功能有一些经验,或者对如何以某种合理的方式解决它有一些想法。
最佳答案
我的问题的答案是第 2 个想法。
我在 UITextField 中保留了一个文本 + 单独的所有标签及其位置和长度的数组 - 这是来自自动完成 View 。
期间
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
我更新所有在将要更改的范围之后的标签,方法是将它们的位置增加 [text length] - range.length
我还有一些改进,当用户从标签中删除单个字母时,它会完全消失。在此功能中完成的所有工作都非常顺利。
根据那些生成的标记位置,我装饰了一个文本。
关于ios - 带有 @tags 的 UITextView 和视觉效果背后的隐藏信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26537912/
当我尝试以非整数的步长(例如,每帧 0.5 像素)在屏幕上移动图形对象时,这会导致移动不稳定和“滞后”;因为对象只会每两帧移动 1 个像素。 我理解为什么会发生这种情况,因为对象的 x/y 值必须是整
市面上有大量的家谱应用程序,但出于某种原因,我找不到一个示例来说明如何为 Android 应用程序创建一个。我是否使用 Canvas ,是否有图表库? 我的基本要求是画一个三层的树(节点)图/图表,其
[ {name: 'John'}, {name: 'Plasmody'}, {name: 'Kugelschreiber'}, {name: 'Sarrah'}, ] 如果我在 J并做
我试图定位所有没有 www 的链接。在数据库中。 https://launchhousing.org.au 并替换为 https://www.launchhousing.org.au 我使用了“搜索和
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我需要排除具有以下模式的文件: ProjectFoo.Data[0-9]{14}.lgp 如何将 RegEx 用于 (Visual)SVN 忽略列表? 最佳答案 subversion 忽略列表不支持正
我正在寻找在处理中创建该项目的方法,但是,我发现该术语有点困难。我不确定如何调用在整个歌曲中线条永久保持的效果来“绘制”音乐数据。 对于我可以查看哪些教程或某人的回答,我将不胜感激。 我的目标是创建尽
我正在尝试为 android 制作游戏。我目前已将所有美术资源加载到 drawables 文件夹中,但我的问题是如何实际引用特定资源来渲染它? 我知道每个文件都有一个唯一的@id,我可能必须在onDr
Closed. This question is off-topic。它当前不接受答案。
只是一个简单的问题。 有一个简单的可视化工具可以生成iOS/QuartzCore的源代码吗? 例如,我会制作一个带有路径和a的CAKeyframeAnimation(例如CGPathMoveToPoi
编辑 3:我想这已经解决了。我刚刚启用了古腾堡编辑器并发现了它的“经典编辑器”部分,即代码编辑器。我唯一需要习惯的是我无法轻易修改的编辑器行高,这还不错。这对我有用,它超过了修改 functions.
我想在具有背景 slider 的可视 Composer 行内创建一个下拉菜单,最重要的是我要切换的链接。我在编辑自定义 css 时面临的问题是链接没有设置为 bottom:0;已设置position:
我正在学习 C++,并且了解一点 Visual Basic 和 Delphi。 但我想知道,有没有像 Delphi 这样的程序,但适用于 C++。您可以将按钮拖到窗体上,双击它,就像在 Delphi
我正在努力使用 pygame 初始化 OpenGL 显示。和pyopengl . import pygame pygame.init() pygame.display.set_mode((1920,
不确定我做错了什么。我创建了一个主题,除了我在可视化编辑器中创建帖子外,一切都很好。对我来说,这很好,但大多数用户不了解 HTML,因此无法真正进入并编辑代码。 在元素检查器(Chrome)中,文章是
我正在编写一个 C# 程序,它接受一堆参数并对数据点进行一些转换,然后将它们绘制到屏幕上。 在我的一个表单上,我有一堆文本框,我都想执行相同的 KeyPress 事件。在我只做一个 switch 语句
我正在创建 UML 事件图,我需要使用发送和接受信号,但我似乎找不到它。我试图用谷歌搜索它,但我似乎找不到任何东西。有谁知道我在哪里可以找到它们,或者它们在 Visio 中不存在? 最佳答案 想知道为
是 Haskell for Visual Studio 2005兼容VS2008 SP1 ? 最佳答案 您最初问题的答案是否定的。visual haskell 的代码是用 Haskell 编写的,并通
我正在使用 Visual Composer 开发我的 WordPress 网站。 我需要包含一个可分页的容器,但如果它可以像幻灯片一样就更好了。 This is my pageable contain
有哪些 Web 应用程序可以让我直观地(通过单击)使用任何 REST API 并生成一些代码(以任何语言)来捕捉我所描述的视觉内容? 与 Swagger 或 Google API Playground
我是一名优秀的程序员,十分优秀!