如何允许将 NSAttributedString 文本输入到 UITextView 中?

2023-11-22

我试图允许在 UITextView 中输入不同样式的文本,有点像使用粗体或斜体等简单属性的文本编辑器。我通过使用 textView 来理解attributedText属性 我可以将属性应用于特定范围的文本。这很好,但我希望能够在 textView 中输入属性文本,这将通过按钮进行切换(例如输入粗体文本)。

到目前为止我的想法是:

我用过-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)textUITextView委托方法采取text参数,并通过创建具有相同文本的 NSAttributedString 来使用属性修改它。然后创建一个 NSMutableAttributedString,它是textView的属性文本。使用附加两个appendAttributedString,然后设置textView的attributedText属性到结果的 attributeString。

这是代码:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

   if (self.boldPressed) {

        UIFont *boldFont = [UIFont boldSystemFontOfSize:self.textView.font.pointSize];
        NSDictionary *boldAttr = [NSDictionary dictionaryWithObject:boldFont forKey:NSFontAttributeName];
        NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:text attributes:boldAttr];
        NSMutableAttributedString *textViewText = [[NSMutableAttributedString alloc]initWithAttributedString:textView.attributedText];
        [textViewText appendAttributedString:attributedText];
        textView.attributedText = textViewText;

           return NO;
       }
   return YES;                
}

每次键入字符时都必须重置 textViews attributeText 对于一个简单的操作来说似乎有点太多了。不仅如此,它还无法正常工作。启用粗体属性后,效果如下:

attributedText issues

这有两个问题。最明显的是如何将每个新角色放入新行。但同样奇怪的是,插入点始终位于文本视图中文本的第一个索引处(仅当启用粗体时,但粗体字符会插入新行)。因此,如果您在启用粗体的情况下键入,然后关闭粗体,则在所有现有文本前面键入简历。

我不确定为什么会发生这些错误。我也不认为我的解决方案非常有效,但我想不出任何其他实现它的方法。


这是什么setTypingAttributes:是为了.每当用户按下您的属性按钮之一时,将其设置为您的属性字典,并且新字符将选取所请求的属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何允许将 NSAttributedString 文本输入到 UITextView 中? 的相关文章

  • 在后台线程上搜索

    我试图在 iPhone 应用程序中搜索数千个对象 但是搜索严重滞后 每次击键后 UI 都会冻结 1 2 秒 为了防止这种情况 我必须在后台线程上执行搜索 我想知道是否有人有一些在后台线程上搜索的提示 我读了一点NSOperation并在网上
  • UIBarButtonItem 按下后更改字体,在外观代理中指定

    我设置了UIBarButtonItem标题字体通过appearanceAppDelegate 中的代理 UIBarButtonItem appearance setTitleTextAttributes NSDictionary dicti
  • 在 iOS 中,如何以编程方式填写 pdf 表单字段?

    我需要获取一个现有的 pdf 文件 并以编程方式填写带有文本的表单字段列表 然后保存 pdf 而不将其显示给用户 例如 如果 pdf 文件包含名为 LastName 和 FirstName 的字段 我想将 FirstName 的值设置为 L
  • 如何从 UI 测试访问 App Delegate?

    我想访问特定的属性router在 UI 测试期间从启动的应用程序的应用程序委托中获取 但我不知道这是否可行 我努力了 let appDelegate UIApplication sharedApplication delegate as A
  • 如何从TableViewCell上的自定义CollectionViewCell推送VC?

    我有一个tableView和细胞 在细胞上我有一个collectionView并在其上显示一些内容 我想发送一个有关选择的链接indexPath 我想从自定义中推送 呈现我的视图CollectionViewCell这是在TableViewC
  • 如何将 Android 应用程序添加到已在 iOS 应用程序中使用的现有 Firebase 项目?

    我一直在我的 iOS 应用程序中使用 Firebase 项目 我现在想开始为 Android 应用程序使用相同的 Firebase 项目及其所有数据库和存储 在您的应用程序下Overview菜单 你应该按添加另一个应用程序并选择Androi
  • 在 Pages 文稿中打开文本—Swift

    在我的 Swift 2 应用程序中 用户通过文本字段创建一串文本 然后将其共享给另一个应用程序 现在 我只能将文本共享为 txt 文件 这不提供选项Open In Pages当我打开系统共享对话框时 如何才能让用户可以选择将输入的文本作为
  • Swift:如何让游戏中的角色只有落地后才能跳跃?

    我正在开发一款游戏 我的角色可以从一个陆地跳到另一个陆地 我已经把所有事情都做好了 除了我剩下的问题是 如果你继续点击屏幕 他可以永远跳跃 我希望他必须先落地才能再次跳跃 import SpriteKit import GameplayKi
  • iPhone:每日本地通知

    我正在尝试实现本地通知 这就是我所设置的 Current date NSDate date NSDate date Add one minute to the current time NSDate dateToFire date date
  • 如何使用逗号和行分隔符对字符串进行标记

    我正在 Swift 中制作一个简单的 String Tokenizer 就像在 Java 中一样 但这对我来说确实不起作用 我的数据源中每行的末尾用 分隔 数据用逗号分隔 例如 字符串 1 字符串 2 字符串 3 字符串 1 字符串 2 字
  • 使用 JSONKit 解析 JSON 文件

    我正在构建一个音叉应用程序 货叉应允许最多 12 个预设节距 此外 我希望允许用户选择一个主题 每个主题都会加载一组预设 不必使用所有预设 我的配置文件看起来像这样 theme A3 comment An octave below conc
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • 单击按钮时退出应用程序 - iOS [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 4 0 中退出应用程序 https stackoverflow com questions 3097244 exit application in ios 4 0 我有一个 AlertView
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 在 Swift 中的 For 循环中更改对象的属性

    我创建了一个名为 ShoppingList 的简单结构 struct ShoppingList var shoppingListId NSNumber var title String var groceryItems GroceryIte
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • UIScrollView 与 UITabBarController 切断

    我有一个 UIScrollView 我将其放置在视图中 界面生成器文档 xib m h 但是 UIScrollView 的下半部分被剪切 并且由于我有一个 UITabBarController 而没有显示其下半部分 我在 appdelega
  • Swift - 保存在 TableView 中选择的复选标记

    我对 Swift 相当陌生 并且在 TableView 多重选择方面遇到问题 我有多个选择 可以用复选标记进行检查 类似于待办事项列表 当我检查项目时 我希望能够返回 ListView 并保存我的选择 我假设将其保持在已保存状态的代码将位于
  • 如何制作像 Facebook 应用程序一样的登录屏幕?

    如何制作像 Facebook 应用程序一样带有 电子邮件 和 密码 文本字段的登录屏幕 Facebook登入 http extdesenv com wp content uploads 2012 05 facebook login ios

随机推荐

  • CompletableFuture——快速失败的聚合未来

    我一直在使用CompletableFuture allOf 帮助器创建聚合期货 只有当它们的组合期货被标记为完成时才会 完成 即 CompletableFuture future2 new CompletableFuture lt gt C
  • asp.net mvc app_data 文件夹

    我想在服务器图库上存储大量图像 我可以为此创建自己的文件夹 但在默认模板中有一个名为 App Data 的文件夹 显然 我认为模板的创建者是为了让我们在那里存储数据 但我找不到打开该文件夹中任何内容的方法 是故意的吗 或者我该怎么做 或者我
  • 使用 AudioQueue 读取音频缓冲区数据

    我正在尝试通过 AudioQueue 读取音频数据 当我这样做时 我可以验证文件的位深度是否为 16 位 但当我获取实际的样本数据时 我只看到从 128 到 128 的值 但我也看到可疑的交错数据 这让我非常确定我只是没有正确读取数据 首先
  • 从命令行将 MySQL 变量传递给脚本

    我有一个 MySQL 更新脚本 我想从命令行运行 但我希望能够将阶段域变量传递给脚本 我知道这行不通 但这是我描述我正在尝试做的事情的最佳方式 uroot hlocalhost mydatabase execute SET domain m
  • SimpleMembership、MVC4、AuthorizeAttribute 和角色

    我正在尝试向我的一些 MVC4 控制器添加授权属性 只要它是一个计划 它们就可以正常工作 Authorize or Authorize Users myuser 但是当我添加任何类型的角色过滤时 它就会崩溃 例如 Authorize Rol
  • htmlentities() 与 htmlspecialchars()

    两者有什么区别htmlspecialchars and htmlentities 我什么时候应该使用其中之一 htmlspecialchars可能用过了 当不需要对具有 HTML 等效项的所有字符进行编码时 如果您知道页面编码与文本特殊符号
  • PHP - 密码验证问题

    我已经为此摸不着头脑两个多小时了 我研究过 stackoverflow 上的文章 包括 Bcrypt 未正确验证的问题 php的password hash和password verify问题不匹配 password verify 调用返回
  • DB (SQL) 自动压力/负载工具?

    我想测量数据库应用程序的性能和可扩展性 我正在寻找一种工具 允许我对数据库运行许多 SQL 语句 将数据库和脚本 SQL 文件作为参数 必要的详细信息 例如主机名 端口 登录名 理想情况下 它应该让我控制参数 例如模拟客户端的数量 测试持续
  • 无法加载脚本。确保您正在运行 Metro 服务器(运行“react-native start”)或者您的捆绑包“index.android.bundle”

    在 android studio 中运行我的项目时出现该错误 我刚刚安装了所有内容 并且一步一步地遵循了所有内容 我正在使用genymotion作为模拟器 并使用react native start从根目录 检查端口 8081 禁用即时运行
  • 在同一命名容器中重用 Facelets 组合时避免重复 id

    我有一个
  • c中的scanf和换行符[重复]

    这个问题在这里已经有答案了 我今天刚刚在 C 班进行了一次测试 我有理由相信答案可能是错误的 scanf d n x Evaluate the expression for the string 54321 n 这个想法非常简单 找到一个整
  • 如何制作固定div?

    我试图使框固定在页面的右下边框中 并且不会随着页面向下滚动而移动 但它对我不起作用 不知道为什么 这是我的代码 div class tooltip div class tooltip top 1 div div class tooltip
  • 将用 Python 训练的 XGBoost 模型移植到用 C/C++ 编写的另一个系统

    假设我已经用 python 成功训练了 XGBoost 机器学习模型 x train x test y train y test train test split x y test size 0 2 random state 7 model
  • 将视频设置为背景“图像”的方法

    我需要建立一个以视频为背景的网站 我可以使用吗z index将其他元素放置在视频顶部 有更好的选择吗 我没有测试过 但你可以尝试设置宽度 高度
  • 应用内购买以解锁付费功能

    我希望发布我的应用程序的两个版本 免费和付费 付费应用程序将具有更多功能 但没有额外的内容 最初我打算在市场上发布两个独立的应用程序 但事实证明很难保留单个代码库并拥有两个独立的应用程序 应用内购买是更好的方法吗 因此 我发布了一个免费应用
  • Java:枚举常量内方法和变量的定义

    我在做一些实验时不小心写了一段代码 这很奇怪 我不明白 我什至很惊讶我能编译它 它看起来像这样 enum Foo VALUE 1 public int myVariable 1 VALUE 2 public void myMethod VA
  • C++ 模块和动态链接的预期关系是什么?

    C 模块 TS 提供了一个出色的工具 可以消除预处理器 缩短编译时间 并且通常支持更健壮 模块化的 C 代码开发 至少对于非模板代码而言 底层机制提供对普通程序中符号导入和导出的控制 然而 有一个major开发用于两种动态加载的库时遇到的问
  • Mongoose 高级自定义架构对象类型

    我找不到任何例子advanced 自定义架构类型涉及自定义对象 或价值对象 在猫鼬 gt 4 4 中 想象一下我想使用自定义类型 例如 function Polygon c this bounds some data this npoint
  • 高效的 Javascript 字符串替换

    嘿 我有一个 HTML 块 我将重复使用它 在用户访问期间的不同时间 而不是一次 我认为实现此目的的最佳方法是创建一个 HTML div 隐藏它 并在需要时获取其innerHTML并对几个关键字执行replace 作为 HTML 块的示例
  • 如何允许将 NSAttributedString 文本输入到 UITextView 中?

    我试图允许在 UITextView 中输入不同样式的文本 有点像使用粗体或斜体等简单属性的文本编辑器 我通过使用 textView 来理解attributedText属性 我可以将属性应用于特定范围的文本 这很好 但我希望能够在 textV