gpt4 book ai didi

swift - IntentHandler 不适用于 widgetFamily

转载 作者:行者123 更新时间:2023-12-05 01:32:45 25 4
gpt4 key购买 nike

我在我的项目中添加了一个 Intent Extension Target,我试图区分在 IntentHandler 的编辑模式下显示的 WidgetKit 类型,并根据此信息我想填充“编辑 WidgetKit ”包含小型、中型或大型 WidgetKit 类型的列表。

当我使用 @Environment(\.widgetFamily) var family 时,它总是给我 .systemMedium 但我当时正在编辑一个大尺寸的 WidgetKit .

例如;当我长按一个 WidgetKit 以编辑并从列表中选择另一个部件类型时,我看到一个列表,其中包含 IntentHandler 中的小型、中型和大型部件类型,但我想查看只有小类型。

问题是是否可以根据我当前正在编辑的 WidgetKit 类型来填充列表?

最佳答案

假设我理解您想要做什么,我认为答案是否定的,这是不可能的。要复制像 Widgetsmith 这样的应用程序所做的事情,您需要定义 3 个单独的 WidgetKit ,每个 WidgetKit 分别对应小型、中型和大型 supportedFamily 尺寸。然后定义 3 个单独的 Intent,每个 WidgetKit 一个,并为每个实现一个单独的 Intent Handler。

像这样:

@main
struct MyWidgetBundle: WidgetBundle {
@WidgetBundleBuilder
var body: some Widget {
SmallWidget()
MediumWidget()
LargeWidget()
}
}

struct SmallWidget: Widget {
let kind: String = "SmallWidget"

var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: SmallWidgetIntent.self, provider: TimelineProvider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("Small Widget")
.supportedFamilies([.systemSmall])
}
}

struct MediumWidget: Widget {
let kind: String = "MediumWidget"

var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: MediumWidgetIntent.self, provider: TimelineProvider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("Medium Widget")
.supportedFamilies([.systemMedium])
}
}

struct LargeWidget: Widget {
let kind: String = "LargeWidget"

var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: LargeWidgetIntent.self, provider: TimelineProvider()) { entry in
WidgetView(entry: entry)
}
.configurationDisplayName("Large Widget")
.supportedFamilies([.systemLarge])
}
}

在您的 Intent 定义文件中,定义 SmallWidgetIntentMediumWidgetIntentLargeWidgetIntent。然后在您的 Intent 处理程序中,您将实现 SmallWidgetIntentHandlingMediumWidgetIntentHandlingLargeWidgetIntentHandling,它们将返回与其关联大小相关的正确选项。

关于swift - IntentHandler 不适用于 widgetFamily,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65450507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com