SwiftUI EKEventEditViewController 字段不可编辑

2023-12-07

我一直在尝试将 EKEventEditViewController 与 SwiftUI 一起使用。我尝试遵循开发论坛的一些建议,了解如何在带有协调器的 UIViewControllerRepresentable 包装器的帮助下添加它。我正在添加下面的代码。

EKEventEditViewController 显示正确,但我面临的问题是只有某些字段是可编辑的。我附上一张显示交互的 gif。

有人遇到过这个问题吗? 这是代码:

import Foundation
import SwiftUI
import EventKitUI

let eventStore = EKEventStore()

struct NewEventGenerator: UIViewControllerRepresentable {

typealias UIViewControllerType = EKEventEditViewController

@Binding var isShowing: Bool

var theEvent = EKEvent.init(eventStore: eventStore)

func makeUIViewController(context: UIViewControllerRepresentableContext<NewEventGenerator>) -> EKEventEditViewController {

    let controller = EKEventEditViewController()
    controller.event = theEvent
    controller.eventStore = eventStore
    controller.editViewDelegate = context.coordinator

    return controller
}

func updateUIViewController(_ uiViewController: NewEventGenerator.UIViewControllerType, context: UIViewControllerRepresentableContext<NewEventGenerator>) {
    uiViewController.view.backgroundColor = .red
}


func makeCoordinator() -> Coordinator {
    return Coordinator(isShowing: $isShowing)
}

class Coordinator : NSObject, UINavigationControllerDelegate, EKEventEditViewDelegate {

    @Binding var isVisible: Bool

    init(isShowing: Binding<Bool>) {
        _isVisible = isShowing
    }

    func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) {
        switch action {
        case .canceled:
            isVisible = false
        case .saved:
            do {
                try controller.eventStore.save(controller.event!, span: .thisEvent, commit: true)
            }
            catch {
                print("Event couldn't be created")
            }
            isVisible = false
        case .deleted:
            isVisible = false
        @unknown default:
            isVisible = false
        }
    }
}}

Here is the recording


与 Xcode 12 / iOS 14 配合良好。从字面上复制粘贴您的代码,在 Info.plist 中添加 requestAccess 和描述。

demo

完整测试的模块,如果有帮助的话。

import SwiftUI
import EventKitUI

let eventStore = EKEventStore()

struct NewEventGenerator: UIViewControllerRepresentable {
    typealias UIViewControllerType = EKEventEditViewController

    @Binding var isShowing: Bool
    var theEvent: EKEvent

    init(isShowing: Binding<Bool>) {
        eventStore.requestAccess(to: .event) { allow, error in
            print("Result: \(allow) or [\(error.debugDescription)]")
        }

        theEvent = EKEvent.init(eventStore: eventStore)

        _isShowing = isShowing
    }


func makeUIViewController(context: UIViewControllerRepresentableContext<NewEventGenerator>) -> EKEventEditViewController {

    let controller = EKEventEditViewController()
    controller.event = theEvent
    controller.eventStore = eventStore
    controller.editViewDelegate = context.coordinator

    return controller
}

func updateUIViewController(_ uiViewController: NewEventGenerator.UIViewControllerType, context: UIViewControllerRepresentableContext<NewEventGenerator>) {
    uiViewController.view.backgroundColor = .red
}


func makeCoordinator() -> Coordinator {
    return Coordinator(isShowing: $isShowing)
}

class Coordinator : NSObject, UINavigationControllerDelegate, EKEventEditViewDelegate {

    @Binding var isVisible: Bool

    init(isShowing: Binding<Bool>) {
        _isVisible = isShowing
    }

    func eventEditViewController(_ controller: EKEventEditViewController, didCompleteWith action: EKEventEditViewAction) {
        switch action {
        case .canceled:
            isVisible = false
        case .saved:
            do {
                try controller.eventStore.save(controller.event!, span: .thisEvent, commit: true)
            }
            catch {
                print("Event couldn't be created")
            }
            isVisible = false
        case .deleted:
            isVisible = false
        @unknown default:
            isVisible = false
        }
    }
}}

struct TestEventKitViewInSheet: View {     // just created in ContentView body
    @State private var showIt = false
    var body: some View {
        Button("Events") { showIt = true }
            .sheet(isPresented: $showIt) {
                NewEventGenerator(isShowing: $showIt)
            }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI EKEventEditViewController 字段不可编辑 的相关文章

  • 自定义过渡动画在animationControllerForPresentedController和animateTransition之间未知延迟

    我的目标是使动画在第一个视图控制器中开始并在第二个视图控制器中结束 我正在尝试使用符合以下条件的对象进行过渡动画UIViewControllerAnimatedTransitioning and UIViewControllerTransi
  • 如何确定当前处于活动状态的视图控制器/显示视图的视图控制器?

    在我的应用程序中 我正在排队一些本地通知 当它们触发时我必须呈现模式视图 问题是我有许多视图控制器 其中任何一个当前都可能处于活动状态 因此需要呈现模式视图控制器 如何确定当前正在使用哪一个 我将导航控制器设置为 Windows 根视图控制
  • cocos2d中获取CCSprite的绝对位置

    在我的游戏中 我有一个CCSprite绕另一个轨道运行CCSprite 很像电子绕原子核运行 我将电子作为原子核的子元素 以使动画更加简单 我所要做的就是旋转原子核 电子就会很好地跟随 然而 我的问题来自于想要让轨道动画看起来更时髦一点 通
  • 在哪里可以了解有关 WebCoreSharedBufferData 的更多信息?

    我有一个在 iOS 6 上完美运行的应用程序 但在 iOS 7 上 如果用户采取了非常具体的操作 太复杂而无法进入 但它使用UIWebView并且它是一致的 应用程序崩溃并出现错误 Terminating app due to uncaug
  • 快速从 RSS feed 获取 img url

    我希望能够从一段字符串中检索 img url 以下是我尝试检索的 img URL 的示例 p img width 357 height 500 src http images sgcafe net 2015 05 OVA1 357x500
  • SwiftUI 切换开关

    我正在尝试实现一个简单的切换开关 但在保存新的切换 开关状态时遇到问题 因为当我更改视图并返回设置时 它默认返回到关闭开关 你能告诉我我做错了什么吗 struct StudyMode View State private var overd
  • UITableView 干扰状态栏

    我正在开发一个具有 UITableViewController 的应用程序 该应用程序显示值列表 如下所示 如何将表格向下移动 使其不会与状态栏冲突 看来我无法对这个场景施加任何限制 所以我不知所措 使用以下 3 个属性UIViewCont
  • ReferenceError:找不到变量:__gCrWeb

    我的网站上有 javascript 错误跟踪 最近 我开始在 iPhone IOS 7 和 8 上的 Chrome 版本 37 和 38 中收到以下错误 ReferenceError 找不到变量 gCrWeb 除了一些参考文献之外 我找不到
  • iOS游戏大小问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我开发了一款 iOS 通用游戏 我想
  • 在 UITableView 中进行分页的最佳方法

    我正在开发一个房地产应用程序 用户填写表单 最小房间数 价格等 后 应用程序查询数据源服务器 并获取具有特定键 值对 属性名称 属性地址 经度 纬度 价格等 的 json 字符串 我想做的是允许用户浏览 UITableView 中的列表 即
  • 如何在 Objective C 中创建 json 字符串?

    我必须动态生成一个 json 字符串并需要发送到服务器 有谁知道如何使用NSJSONSerialization 下面是我的字符串 surveyid Survey1 responsetime dd mm yyyy hh mm ss locat
  • 是否可以在 iOS 上确保 oauth 安全?

    是否可以在 iOS 上确保 oauth 安全 我正在调查OAuth 2 0 http tools ietf org pdf draft ietf oauth v2 12 pdf作为一种为 iOS 应用程序 套件 实现单点登录 授权的方法 为
  • AVAssetExportSession.requestExportSession 回调从未被调用(swift 3,iOS10)

    以下代码从不调用导出回调 导出会话创建得很好 我没有看到任何错误 也没有任何进展 CPU 为 0 我认为没有例外 状态为 1 进行中 进度为 0 错误为零 视频在画廊中播放 我可以成功获取视频的图像 我已将代码提取到单个 UIViewCon
  • 如何检查dispatch_async块是否已完成运行

    所以基本上我需要能够在块完成运行后运行 segue 我有一个块可以执行一些 JSON 操作 我需要知道它何时完成运行 我有一个队列 我称之为 json queue jsonQueue dispatch queue create com ja
  • 跨平台 IAP

    我已在 iOS 和 Android 中集成了应用内购买 自动续订订阅 两者都工作正常 我对使用跨平台验证 IAP 有一定的疑问 例如 当多个用户登录一个应用程序时 某一特定应用程序的订阅如何运作 例如 如果用户 A 有标准套餐并且从应用程序
  • 在 C# 中给定周数和年份,计算一周的开始和结束日期(基于 ISO 规范)

    我需要生成一份报告 显示一年中的 52 周 或某些年份的 53 周 及其开始日期和结束日期 有一个 ISO 规范可以做到这一点 但看起来非常复杂 我希望有人知道在 C 或 Visual Basic 中执行此操作的方法 实际上适用于 Visu
  • 针对架构 armv7 的 iOS 链接器错误的 Google 转化跟踪

    我正在尝试将 iOS 版 Google 转化跟踪功能添加到我的 iPhone 应用程序中 该应用程序的基础 SDK 是 iOS6 该应用程序的有效架构是armv7 armv7s 该应用程序的 iOS 部署目标是 4 3 我正在使用最新的 x
  • 将 GestureRecogniser 附加到多个图像视图

    今天我在将相同的手势识别器附加到多个图像视图时遇到了一些奇怪的事情 它仅附加到最后一个视图 换句话说 它只能附加到一个视图 我必须创建多个手势识别器才能满足我的要求 以下是我所做的 我做的对吗 这是将识别器附加到多个图像视图的唯一方法吗 请
  • 在UIView中画线

    我需要在 UIView 中画一条水平线 最简单的方法是什么 例如 我想在 y coord 200 处画一条黑色水平线 我没有使用界面生成器 也许这有点晚了 但我想补充一点 有更好的方法 使用 UIView 很简单 但相对较慢 此方法会覆盖视
  • 在 iOS 上将 SwiftUI 视图转换为 PDF

    我用 SwiftUI 画了一些漂亮的图表 因为它非常简单且容易做 然后我想将整个 SwiftUI 视图导出为 PDF 以便其他人可以以良好的方式查看图表 SwiftUI 没有直接为此提供解决方案 Cheers Alex 经过一番思考 我想到

随机推荐

  • iPhone 崩溃 - 消息发送到已释放的实例

    好的 这是我收到的错误 CFRunLoopTimer invalidate message sent to deallocated instance 0x109b05a0 gdb 这是导致崩溃的代码 if waitingOpponentTi
  • 如何在 Google 地图中启用和禁用绘图控制选项?

    我有三个不同的按钮用于绘制形状 单击每个按钮 应启用专有绘图选项 并且应禁用其他选项 我的代码如下 drawShape js 文件 以下是我的 JavaScript 代码 我有三种不同的方法来绘制形状 圆形 矩形 多边形 通过下面的代码 每
  • 我可以将某些东西绑定到 ALT(元)吗

    我有 global set key f11 menu bar mode 我怎样才能将它绑定到左侧ALT Meta使用alt作为meta会不会有冲突 您无法将函数绑定到修饰键 因为当单独按下修饰键时 或者更准确地说 当按下一个或多个修饰键而没
  • 使用 Javascript 从待办事项列表中删除项目

    尝试我的第一个 Javascript 项目 使用 DOM 制作一个待办事项列表 添加项目后 如何让 删除 按钮起作用并删除该项目 删除按钮 此外 在进行新条目后 添加后的列表项仍保留在输入字段中 如何使其每个列表项后为空白 是的 我知道我的
  • 如果没有行匹配则返回一个值

    The authorityID TinyInt 专栏永远不会null 我想要的是返回一个15如果没有行 通过下面的查询 如果没有行 我什么也得不到 select top 1 isnull authorityID 15 from docAut
  • 使用 Gmail API 访问 CHATS 标签

    Gmail API 是否提供获取 Gmail 聊天日志的方法 Chats 是一个标签 就像 INBOX 一样 我希望能找到它用户 标签列表但它不存在 我必须启用某些功能才能显示 CHATS 标签吗 Gmail API 支持此功能吗 根据查找
  • Ensime 不适用于 sbt + android-plugin

    我用这个创建了一个项目 https github com gseitz android sbt project g8 当我在 emacs 中启动 ensime 编辑 src main scala Activity scala 时 我几乎到处
  • 输入中不支持的字符

    我想将一串字符分配给一个变量 但它说 there isn t a code to show 我有一个字符串想要分配给一个变量 d stunning st n Unsupported characters in input or word s
  • 在 C# 中使用 SSE

    我目前正在用 C 编写一个应用程序 该应用程序可以从使用 SSE 中受益匪浅 因为相对较小的代码片段会占用 90 95 的执行时间 代码本身也非常适合 SSE 因为它是基于矩阵和向量的 所以我继续并开始使用 Mono Simd 尽管这在执行
  • eclipselink 可执行 JAR 中的 PersistenceUnitLoadingEception

    我正在开发一个使用 eclipselink 的独立 java 应用程序 当我从 eclipse IDE 执行应用程序时一切都很好 但我已经导出了一个可执行 JAR 文件 从那以后我无法使 eclipseLink 工作 我在Eclipse社区
  • AttributeError:模块“tkinter”没有属性“tk”

    我正在尝试制作一个简单的音乐播放器 但我不断收到此错误 Traceback most recent call last File C Users nickw PycharmProjects untitled1 music player li
  • 如何在 vue.js 中从父方法访问子方法

    我有两个嵌套组件 从父级访问子方法的正确方法是什么 this children 0 myMethod 似乎可以解决问题 但它很丑陋 不是吗 还有什么更好的方法 您可以使用ref import ChildForm from component
  • Flutter 参数类型“List”无法分配给参数类型“Uint8List”

    我有一个代码 最初不是我编写的 在尝试更新它时 我收到此错误 ui encodePng temp The argument type List
  • 如何删除Lua模块的所有代码和内存空间

    我有一个很长的飞行程序 它是一个播放器 启动后 它会通过服务器的命令从网络加载并运行Lua代码 每个代码都有一个唯一的命名模块 每天 它需要加载一系列不同的代码 即Lua模块 并运行它们 我担心时间长了内存会溢出 所以 我的问题是 Lua
  • 如何获得具有固定列表头的丰富列表框?

    针对 Firefox 29 我正在尝试创建一个richlistbox with a listhead 包含listheaders 如果richlistbox内容是可滚动的 具有
  • 核心页眉面板和粘性页脚

    我正在尝试复制静态页脚 如图所示here在聚合物芯 集管 面板中 到目前为止 我有一个核心标题面板 由页脚和带有 fit 属性的主要内容区域组成 因此它可以拉伸到视口的高度
  • 如何转义 C 的 printf 中的 %(百分号)符号

    使用时如何转义 符号printf in C printf hello not like this 您可以通过发布双 来转义它 如下所示 使用你的例子 printf hello 转义 符号仅适用于printf 如果你这样做 char a 5
  • Twitter 意图的“推文”事件回调在“点击”而不是“推文”时触发

    我对 Twitter 意图共享功能有一些问题 单击共享按钮本身 在打开弹出窗口之前 会触发 tweet 事件 我检查了 点击 和 推文 事件 这两个事件是同时触发的 twttr ready function twttr twttr even
  • 使用 Python PIL 库将图像垂直淡入透明

    我已经查看了教程 其他 stackoverflow 问题和 PIL 文档本身 但我仍然不确定如何去做 我想在 y 轴下方约 55 处开始垂直淡化图像 并在约 75 处使图像完全透明 保留图像的完整高度很重要 即使最后 25 左右应该完全透明
  • SwiftUI EKEventEditViewController 字段不可编辑

    我一直在尝试将 EKEventEditViewController 与 SwiftUI 一起使用 我尝试遵循开发论坛的一些建议 了解如何在带有协调器的 UIViewControllerRepresentable 包装器的帮助下添加它 我正在