首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SwiftUI中的多行可编辑文本字段

SwiftUI中的多行可编辑文本字段
EN

Stack Overflow用户
提问于 2019-10-05 19:08:39
回答 2查看 2.2K关注 0票数 3

我希望在macOS的Swift UI中创建一个可编辑的多行文本框。我想创建一个语法突出显示文本编辑器,所以它将是多行的,并在各行中改变样式。在框架的当前状态下,这是可能的吗?我在网上几乎找不到任何关于它的文档。

EN

回答 2

Stack Overflow用户

发布于 2019-12-26 23:57:51

这可能会很有用,这是我用SwiftUI获得NSTextView的第一个解决方案:

代码语言:javascript
运行
AI代码解释
复制
import SwiftUI
import os

let uiLog = OSLog(subsystem: "com.visual-science.CryptiK", category: "UI")

class  EditorCoordinator : NSObject, NSTextViewDelegate {
  let textView: NSTextView;
  let scrollView : NSScrollView
  let text : Binding<NSAttributedString>

  init(binding: Binding<NSAttributedString>) {
    text = binding

    textView = NSTextView(frame: .zero)
    textView.autoresizingMask = [.height, .width]
    textView.textStorage?.setAttributedString(text.wrappedValue)
    textView.textColor = NSColor.textColor

    scrollView = NSScrollView(frame: .zero)
    scrollView.hasVerticalScroller = true
    scrollView.autohidesScrollers = false
    scrollView.autoresizingMask = [.height, .width]
    scrollView.documentView = textView

    super.init()
    textView.delegate = self
  }

  func textDidChange(_ notification: Notification) {
    switch  notification.name {
    case NSText.didChangeNotification :
      text.wrappedValue = (notification.object as? NSTextView)?.textStorage ?? NSAttributedString(string: "")
    default:
      os_log(.error, log: uiLog, "Coordinator received unwanted notification")
    }
  }

}

struct DataTextEditorView: View, NSViewRepresentable {
  typealias Coordinator = EditorCoordinator
  typealias NSViewType = NSScrollView

  let text : Binding<NSAttributedString>

  func makeNSView(context: NSViewRepresentableContext<DataTextEditorView>) -> DataTextEditorView.NSViewType {
    os_log(.info, log: uiLog, "%@", context.coordinator.scrollView)
    return context.coordinator.scrollView
  }

  func updateNSView(_ nsView: NSScrollView, context: NSViewRepresentableContext<DataTextEditorView>) {
    os_log(.debug, log: uiLog, "%@", context.coordinator.self)
    os_log(.debug, log: uiLog, "%@", text.wrappedValue)
  }

  func makeCoordinator() -> EditorCoordinator {
    os_log(.info, log: uiLog, "makeCoordinator")
    let coordinator =  EditorCoordinator(binding: text)
    return coordinator
  }

}

如果像我一样,你只需要编辑一些没有属性的文本,你可以只用字符串替换NSAttributedString,并调整代码以适应这种更简单的情况。

票数 1
EN

Stack Overflow用户

发布于 2019-10-06 00:06:16

您可以在SwiftUI中使用多行TextField (只需在其上调用.lineLimit(N)即可使用多行),但目前不支持具有多个独立样式的文本。TextField只有一种字体和样式。

不过,您也可以自己动手:创建一个提供NSTextViewNSViewRepresentable实现,并将其绑定到一个NSMutableAttributedText属性。您将需要自己处理所有的文本视图模型同步和绑定更新,但这肯定是可行的。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58251487

复制
相关文章
Rasa NLU 实践
learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code
Michael阿明
2022/11/18
1.4K0
Rasa NLU 实践
使用Botkit和Rasa NLU构建智能聊天机器人
我们每天都会听到关于有能力涉及旅游、社交、法律​​、支持、销售等领域的新型机器人推出的新闻。根据我最后一次查阅的数据,单单Facebook Messenger就拥有超过11000个机器人,然而到我写这篇文章的时候,估计又已经增加了几千台。第一代的机器人由于它们只能根据对话中的关键字来分析有限的一些问题,因此显得十分的愚笨。但是随着像Wit.ai, API.ai, Luis.ai, Amazon Lex, IBM Watson等机器学习服务和NLP自然语言处理(Natural Language Processing)的商品化,促进了像donotpay 和 chatShopper这样的智能机器人的发展 。
花落花飞去
2018/01/29
5.8K0
使用Botkit和Rasa NLU构建智能聊天机器人
什么是Rasa智能机器人?如何与LLM结合?
之前写过一篇介绍用Rasa结合类似于GPT这种LLM应用的项目:RasaGpt——一款基于Rasa和LLM的聊天机器人平台
山行AI
2023/06/14
6.3K0
什么是Rasa智能机器人?如何与LLM结合?
rasa 介绍文档
1. Rasa介绍 1.1 架构 Rasa Open Source: NLU (理解语义) + Core (决定对话中每一步执行的actions) Rasa SDK: Action Server (调用自定义的 actions) Rasa NLU 理解用户的对话,提取出感兴趣的信息 (如意图分类、实体提取等),以pipeline的方式处理用户对话,在config.yml中配置。 Rasa Core 根据NLU输出的信息、以及Tracker记录的历史信息,得到上下文的语境:预测用户当前最可能表达的
小爷毛毛_卓寿杰
2022/05/10
2.5K0
rasa 介绍文档
Rasa 聊天机器人专栏(二):命令行界面
rasa init命令将询问你是否要使用此数据训练初始模型。如果你回答否,则models目录将为空。
磐创AI
2019/12/12
3.9K0
Rasa 聊天机器人专栏(二):命令行界面
Rasa 聊天机器人专栏(一):基本原理介绍
本页面解释了用Rasa构建助手的基本原理,并展示了Rasa项目的结构。你可以在这里测试它,而不需要安装任何东西。你也可以安装Rasa并在命令行中执行。
磐创AI
2019/12/10
3.3K0
Rasa 聊天机器人专栏(一):基本原理介绍
Rasa Core实践 报时机器人
learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code
Michael阿明
2022/12/01
1.2K0
用 TensorFlow_text(3) 构建 Rasa 中文分词 tokenizer
前一段时间简单了解 tensorflow_text 简单中文分词使用[1],再结合 Rasa 的学习,就萌生出模仿 Rasa 的结巴分词 tokenizer,造一个 Tensorflow_text_tokenizer。
coding01
2021/02/24
1.5K0
Rasa 聊天机器人专栏(五):模型评估
机器学习中的标准技术是将一些数据作为测试集分开。你可以使用以下方法将NLU训练数据拆分为训练集和测试集:
磐创AI
2019/12/23
2.3K0
Rasa 聊天机器人专栏(五):模型评估
Rasa Stack:创建支持上下文的人工智能助理和聊天机器人教程
Rasa Stack 是一组开放源码机器学习工具,供开发人员创建支持上下文的人工智能助理和聊天机器人:
磐创AI
2019/05/15
1.9K0
基于RASA的task-orient对话系统解析(一)
由于换工作以及家里的事,很久没有写东西了。最近因为工作内容,需要做任务型对话系统的相关研究和开发。趁此机会,总结一下rasa框架的基本内容,包括基本架构,代码级别的分析,以及使用上的一些tips。需要注意,本文不会详细描述如何简单构建一个小demo的流程,这个在rasa的doc和一些博客上都有很好的例子,我这里就不重复引用了。贴一些链接,有兴趣的同学可以去这些地方看看。
AINLP
2019/08/28
3.2K0
基于RASA的task-orient对话系统解析(一)
Rasa 聊天机器人专栏开篇
Rasa 是最火的聊天机器人框架,是基于机器学习和自然语言处理技术开发的系统。Rasa 中文官方文档包括聊天机器人,上下文管理,多伦对话,意图识别,填槽,中文聊天机器人开发必备手册。
磐创AI
2019/12/06
2.8K0
Rasa 聊天机器人专栏(六):验证数据
要验证域文件,NLU数据或故事数据中是否存在任何错误,请运行验证脚本。你可以使用以下命令运行它:
磐创AI
2020/03/04
7350
北邮张庆恒:如何基于 rasa 搭建一个中文对话系统 (有源码视频)| 分享总结
对话系统是自然语言处理的一个热门话题,而自然语言理解则是对话系统的关键组成部分,现有的很多自然语言理解工具往往以服务的方式获取(Google 的 API.ai, Facebook 的 Wit.ai 等),使用这些服务往往需要向服务提供商提供自己的数据,并且根据自己业务调试模型很不方便。本文为大家介绍了一种新方法,即如何基于 rasa 搭建一个中文对话系统。 在近期 AI 研习社举办的线上免费公开课上,来自北京邮电大学网络技术研究院的张庆恒分享了基于 rasa nlu 构建自己的自然语言理解工具,并结合 r
AI研习社
2018/03/16
4.7K0
北邮张庆恒:如何基于 rasa 搭建一个中文对话系统 (有源码视频)| 分享总结
RasaGpt——一款基于Rasa和LLM的聊天机器人平台
在ChatGpt引领的AI浪潮下,一大批优秀的AI应用应运而生,其中不泛一些在某些行业或领域中探索AI技术或应用落地的案例。不得不说,AI正在重塑各个行业。众所周知,Rasa是一个非常优秀的,用于构建开源AI助手的框架,它允许开发人员创建自然语言对话系统,包括聊天机器人、语音助手和智能助手。本文介绍的是一个基于Rasa和Langchain之上,通过将LLM的能力赋予Rasa建立的聊天机器人平台。
山行AI
2023/06/14
4.5K0
RasaGpt——一款基于Rasa和LLM的聊天机器人平台
Rasa 基于规则的对话管理: 天气预报机器人
learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code
Michael阿明
2022/12/13
2.1K0
Rasa 基于规则的对话管理: 天气预报机器人
Rasa 基于知识库的问答 音乐百科机器人
learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code
Michael阿明
2022/12/25
1.4K0
Rasa 基于知识库的问答 音乐百科机器人
Rasa 使用ResponseSelector实现FAQ和闲聊
learn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code
Michael阿明
2022/12/01
8970
Rasa 使用ResponseSelector实现FAQ和闲聊
Awesome-Chinese-NLP:中文自然语言处理相关资料
推荐Github上一个很棒的中文自然语言处理相关资料的Awesome资源:Awesome-Chinese-NLP ,Github链接地址,点击文末"阅读原文"可直达:
AINLP
2019/10/10
5.7K1
Awesome-Chinese-NLP:中文自然语言处理相关资料
Rasa 聊天机器人专栏(八):在Docker上运行Rasa
这是如何使用Docker构建Rasa助手的指南。如果你之前没有使用过Rasa,我们建议你先Rasa教程开始。
磐创AI
2020/03/04
5.8K0

相似问题

Rasa NLU模型

11

Rasa nlu服务器故障

369

数据隐私Rasa NLU

168

Rasa核与Rasa nlu的区别

510

Rasa NLU安装问题

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档