创建新的控制中心小部件后,我遇到了一些奇怪的小部件问题。
这是我的控制中心小部件的代码示例
@available(iOS 18.0, *)
struct OpenAppIntent: AppIntent {
static var title: LocalizedStringResource = "Button Control Widget"
static var isDiscoverable: Bool = false
static var openAppWhenRun: Bool = true
func perform() async throws -> some IntentResult & OpensIntent {
return .result(opensIntent: OpenURLIntent())
}
}
@available(iOS 18.0, *)
struct ActionButtonControlWidget: ControlWidget {
let kind: String = "widget.ShortcutControlButtonWidget"
var body: some ControlWidgetConfiguration {
StaticControlConfiguration(kind: kind) {
ControlWidgetButton(action: OpenAppIntent()) {
Image("someimage")
Text("someTitle")
}
}
}
}
这是WidgetBundle的代码
struct WidgetBundle: SwiftUI.WidgetBundle {
init() {
//do some init
}
var body: some Widget {
Widget1()
Widget2()
Widget3()
Widget4()
if #available(iOS 16.1, *) {
LiveActivityWidget()
}
if #available(iOS 18.0, *) {
ActionButtonControlWidget()
}
}
}
此后,在 iOS 17 上,主屏幕上的所有小部件都会停止工作,如果您想添加新的小部件,应用程序不会在小部件中心看到此小部件。也许以前有人遇到过这个问题。谢谢。
一般来说,它看起来不像代码问题,因为#available和@available使用正确。
这是我的 WidgetBundle 的代码
@main
struct CredWidgetBundle: WidgetBundle {
@WidgetBundleBuilder
var body: some Widget {
Widget1()
Widget2()
Widget3()
if #available(iOS 18, *) {
Control1()
}
}
}
使用 Xcode16 beta 进行构建,一切在模拟器上都能完美运行,但在设备上遇到相同的问题,其中应用程序小部件在小部件中心不可用。 使用 App Store 中的 Xcode16 发行版,它可以工作。 ps:我已经清除了派生数据并从 Xcode 进行了全新构建
当前正在尝试调试另一个问题,其中控件的自定义图标不可见