问题标签 [uiscenedelegate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
320 浏览

mac-catalyst - 跟踪用户何时返回应用程序或将焦点从 Mac Catalyst 窗口移开

我想使用UISceneSession生命周期的委托方法来帮助通知我的 Mac Catalyst 应用程序,当用户将他们的焦点从应用程序(窗口)移开然后回到应用程序(窗口)时。

当应用程序首次在 Mac 上启动sceneWillEnterForeground并被sceneDidBecomeActive成功调用时,但是当我专注于另一个应用程序时,则委托诸如sceneWillEnterForeground未调用的方法。为什么?

0 投票
1 回答
250 浏览

ios - SwiftUI,从场景更改视图(:继续

在一个SwiftUI应用程序中,我面临着一个新的挑战,希望有人能给我一些提示或指导。到目前为止,我所看到的在应用程序各部分之间进行通信的机制似乎不太适合这里。但这可能是由于我对SwiftUI.

首先是相关代码:

和:

其次,我的问题是:如何在Scene(:continue内部执行处理后,让我的视图重绘自己?

我有一些想法,在场景中做一些事情(:继续功能会影响视图的绘制。

不幸的是,在尝试实现时,我意识到绘制视图的代码是在场景(:继续函数)之前执行的。因此我需要一些其他机制(如通知、绑定或??)来重绘视图。

有没有好的做法或标准的方法来做到这一点?

0 投票
1 回答
506 浏览

ios - 使用 UISceneDelegate 将旧 Xcode 项目迁移到新项目

我有一个没有UISceneDelegate方法的旧 Xcode 项目。是否可以使用方法将旧 Xcode 项目迁移到新项目,UISceneDelegate但仍保持与 iOS 12 的兼容性?

如果是这样,怎么做?因为我在 iOS 14 中看到了很多错误,唯一的解决方法是使用 UISceneDelegate 方法。

0 投票
1 回答
346 浏览

ios - 如何将值从 SceneDelegate 文件传输到 ViewController (Swift 5)

在其中一个 SceneDelegate 方法中,我想为另一个 ViewController 中的变量分配一个值。我怎样才能做到这一点?总是为零。我尝试了不同的方法,但由于某种原因它们不起作用,我想使用完成处理程序,但似乎我无法在 SceneDelegate 方法中做到这一点

0 投票
1 回答
1098 浏览

ios - 为什么不可靠地调用 UIApplicationDelegate 方法`application(_:configurationForConnecting:options:)`

问题:

我发现有关 AppDelegate 方法的一些意外行为application(_:configurationForConnecting:options:)

该文档指出:

UIKit 在创建新场景之前不久调用此方法。

我希望每次启动应用程序时都是这种情况。
当我第一次启动我的应用程序时确实调用了该方法,但是对于所有后续启动,它不是.

复制:

我有一个非常简单的测试用例可以重现:

  • Xcode 12 > 创建新项目 > iOS > App (UIKit/Storyboard)
  • 在方法中添加调试语句,AppDelegate如下所示:
  • 运行应用程序 > “我被叫了!” 在控制台中打印
  • 再次运行应用程序 > 没有打印任何内容。

问题:

为什么application(_:configurationForConnecting:options:)在第二次启动时不被调用?
(这是预期的行为,如果是,为什么/它是 Apple 的错误)

0 投票
1 回答
424 浏览

ios - 当主应用程序未打开时,Swift 如何从今天的扩展中打开特定的视图控制器

我用一些 UIButtons 创建了一个今天的扩展,我想在用户点击一个按钮时打开一个特定的视图控制器。当主应用程序打开时,它现在可以工作,但是当它关​​闭时,它只会打开主应用程序并且不会导航到我的特定视图控制器。

我所做的:如果在TodayExtension View Controller中按下按钮,我已经设置了 URL Sheme 并编写了 OpenURL 代码。

SceneDelegate我编写了导航到特定视图控制器的代码func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {

但是就像我说的那样,这仅在之前打开主应用程序时才有效。即使主应用程序关闭,我该怎么做才能工作?

在 Google 的帮助下,我发现我必须设置该func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {功能,但我不知道如何设置。我写的是

但这不起作用。

希望可以有人帮帮我。

0 投票
0 回答
153 浏览

ios - iOS——sceneWillResignActive在拉状态栏看到通知中心时调用了两次

我正在尝试 iOS 应用程序状态,并且在 SecenDelegate 中使用 sceneWillResignActive 函数时出现了有线行为,当我将应用程序置于后台或打开 ControlCenter 时,此函数正常工作,但是当我拉动状态栏时调用的函数两次

行为的原因是什么?

这里有一些调试信息:

日志显示场景退出活动,然后变为活动,然后再次退出活动,一次拉动

0 投票
2 回答
707 浏览

swiftui - 使用 SwiftUI 确定后台状态

在 iOS 13+ 中使用 SwiftUI 时,确定后台状态的传统方法不再适用。例如:

  • AppDelegate 方法applicationDidEnterBackground(_ application: UIApplication)applicationDidBecomeActive(_ application: UIApplication)不会被调用。

  • 通知didEnterBackgroundNotificationwillEnterForegroundNotificationdidBecomeActiveNotificationwillResignActiveNotification发送。

作为替代方案,还有UIWindowSceneDelegate回调:sceneDidBecomeActive(_ scene: UIScene), sceneWillResignActive(_ scene: UIScene), sceneWillEnterForeground(_ scene: UIScene),sceneDidEnterBackground(_ scene: UIScene)

这些替换的问题在于它们特定于进入和离开前景的多个场景之一。它们没有提供一种简单而干净的方法来确定整个应用程序是在前台还是后台。

由于与用户界面无关的原因,确定应用程序的前台/后台状态很重要。 当应用程序不在前台时,一些 iOS 功能会静默失败(通配符蓝牙扫描和 iBeacon 传输是两个例子。)我经常开发没有任何用户界面的 iOS 框架,所以我需要一种方法来确定应用程序的背景/前台状态不依赖于在其中粘贴一堆样板代码UIWindowSceneDelegate——我要求使用我的框架的人这样做是不合理的。

是否有任何直接的方法可以使用 SwiftUI 在 iOS 13 上确定应用程序的前台/后台状态?

0 投票
1 回答
71 浏览

swiftui - SwiftUI - 使用 @main 设置 rootViewController

在 SwiftUI 中使用 SceneDelegate 时,可以创建如下所示的函数,用于设置视图,如下所示。但是,在最新版本中,我们现在使用 WindowsGroup。是否可以编写一个函数来更改 WindowsGroup 中的视图?

0 投票
0 回答
44 浏览

swift - 从 SceneDelegate 访问 viewController 属性 - Swift - 以编程方式

我在相机 ViewController 中有一个 blurEffect,每当我从一个 viewController 传递到另一个时,我都会使用它来模糊 cameraView。

我这样做,为它的 alpha 值设置动画。

这些是模糊效果变量:

我希望当应用程序进入后台或前台时,我可以访问属性并更改 alpha 值。

这就是我在 SceneDelegate 中所做的:

我可以正确访问 cameraViewController 但 blurView.alpha 动画不起作用,有什么建议可以导致这个问题吗?